zoukankan      html  css  js  c++  java
  • k8s部署kafka集群

    一、概述

    在k8s里面部署kafka、zookeeper这种有状态的服务,不能使用deployment和RC,k8s提供了一种专门用来部署这种有状态的服务的API--statefulset,有状态简单来说就是需要持久化数据,比如日志、数据库数据、服务状态等。

    statefulset应用场景:

    • 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
    • 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现
    • 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态),基于init containers来实现
    • 有序收缩,有序删除(即从N-1到0)

    statefulset组成:

    • 用于定义网络标志(DNS domain)的Headless Service
    • 用于创建PersistentVolumes的volumeClaimTemplates
    • 定义具体应用的StatefulSet

    StatefulSet中每个Pod的DNS格式为statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local,其中 

    • 0..N-1为Pod所在的序号,从0开始到N-1
    • serviceName为Headless Service的名字
    • statefulSetName为StatefulSet的名字
    • namespace为服务所在的namespace,Headless Servic和StatefulSet必须在相同的namespace
    • .cluster.local为Cluster Domain

     

    二、部署

    首先下载相关的部署文件:

    git  clone  https://github.com/cuishuaigit/k8s-kafka.git

    部署前需要提前准备nfs提供动态存储,参考我之前的博客:https://www.cnblogs.com/cuishuai/p/9152277.html

    cd  k8s-kafka
    kubectl create -f namesapce.yaml
    kubectl create -f zk.yaml 

    kubectl create
    -f kafka.yaml

     

    详细信息参考:https://github.com/cuishuaigit/k8s-kafka

     

  • 相关阅读:
    SQLite的总结与在C#的使用
    Linq中比较字符串类型的日期
    C#中委托,匿名函数,lamda表达式复习
    MYSQL中SUM (IF())
    C#在属性中用Lambda语法
    Mysql绿色版安装和遇到的问题
    FormsAuthentication权限管理
    存储过程中高性能安全式SQL拼接
    JavaScript实现搜索联想功能
    JavaScript组成
  • 原文地址:https://www.cnblogs.com/cuishuai/p/10243291.html
Copyright © 2011-2022 走看看