k8s部署kafka,并使用zookeeper做注册中心

kafka在3.x版本后增加KRaft作为自己的注册中心,可以不依赖外部的zk;这里上一篇已经部署好了zk,kafka依然使用zk作为注册中心。

这里使用kafka是为集成zipkin收发微服务接口链路日志数据,只需要部署1个实列即可够用。

编写脚本yaml

vi kafka.yaml

sh 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka
  namespace: default
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      project: kafka
      app: kafka
  template:
    metadata:
      labels:
        project: kafka
        app: kafka
    spec:
      containers:
        - name: kafka
          image: bitnami/kafka:3.4.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 9092
              name: web
              protocol: TCP
          env:
            - name: MY_POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
#            # 已zookeeper方式启动注释开始
            - name: KAFKA_ENABLE_KRAFT
              value: "no"
            - name: KAFKA_CFG_ZOOKEEPER_CONNECT
              value: zk-cs:2181/kafka  # 这里使用zk的service
            - name: KAFKA_PORT_NUMBER
              value: "9092"
            - name: KAFKA_BROKER_ID
              value: "1"            
            - name: KAFKA_CFG_ADVERTISED_LISTENERS
              # 注意必须是监听 service:端口 否则会成为实列:端口 如:kafka-974d87ccf-gnsg9:9092 导致应用不能通过service找到kafka 提示 unknowhost
              value: "PLAINTEXT://kafka:$(KAFKA_PORT_NUMBER)"
            - name: KAFKA_CFG_LISTENERS
              value: "PLAINTEXT://:$(KAFKA_PORT_NUMBER)"
#            - name: KAFKA_ADVERTISED_LISTENERS
#              value: PLAINTEXT://:9092
#            - name: KAFKA_LISTENERS
#              value: PLAINTEXT://:9092
            - name: KAFKA_CONFLUENT_TOPIC_REPLICATION_FACTOR
              value: "1"
            # 已zookeeper方式启动注释结束
            # 默认已KRaft方式启动
#            - name: KAFKA_CFG_ADVERTISED_LISTENERS
              # 需配置hosts域名映射
#              value: PLAINTEXT://kafka-server:30092
            #- name: KAFKA_HEAP_OPTS
            #  value: -Xmx2048m -Xms2048m
            - name: ALLOW_PLAINTEXT_LISTENER
              value: "yes"
---
apiVersion: v1
kind: Service
metadata:
  name: kafka
  namespace: default
  labels:
    app: kafka
spec:
  type: NodePort
  selector:
    project: kafka
    app: kafka
  ports:
    - port: 9092
      targetPort: 9092
      nodePort: 30092

执行部署

kubectl apply -f kafka.yaml

查看是否注册到ZK中,登录zk的pod

zkCli.sh

查看kafka是否注册成功

ls /

查看到 [kafka,zookeeper],kafka节点已经注册成功

get /kafka

相关推荐
烟雨书信10 分钟前
Docker文件操作、数据卷、挂载
运维·docker·容器
IT成长日记14 分钟前
【Docker基础】Docker数据卷管理:docker volume prune及其参数详解
运维·docker·容器·volume·prune
这儿有一堆花19 分钟前
Docker编译环境搭建与开发实战指南
运维·docker·容器
LuckyLay20 分钟前
Compose 高级用法详解——AI教你学Docker
运维·docker·容器
Uluoyu28 分钟前
redisSearch docker安装
运维·redis·docker·容器
IT成长日记5 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
热爱生活的猴子5 小时前
阿里云服务器正确配置 Docker 国内镜像的方法
服务器·阿里云·docker
FrankYoou9 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
隆里卡那唔9 小时前
在dify中通过http请求neo4j时为什么需要将localhost变为host.docker.internal
http·docker·neo4j
疯子的模样9 小时前
Docker 安装 Neo4j 保姆级教程
docker·容器·neo4j