• 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

     

  • 相关阅读:
    Python reportlab table 设置cellstyle枚举,设置单元格padding
    代理工具 v2ra*的使用
    python 开发环境需要安装
    postgres 新增或者更新语句
    python psycopg2 查询结果返回字典类型
    postgres 多个字段匹配查询
    django 执行原生sql形参传递,字段参数传递
    亚马逊接口调用
    python x 开头的字符转码为中文
    postgres 定义变量
  • 原文地址:https://www.cnblogs.com/cuishuai/p/10243291.html
Copyright © 2020-2023  润新知