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

相关推荐
阿里云云原生2 分钟前
2026 GOAI 世界人工智能开源大赛「Agent Infra 新智基座」赛道正式启动
云原生
晴空了无痕11 分钟前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
爱码少年5 小时前
Docker遍历镜像生成导出镜像命令六法
docker·shell
探索云原生6 小时前
Kubernetes 官方出品:一个 Controller 搞定 Job 排队和资源配额
ai·云原生·kubernetes·scheduler
BullSmall8 小时前
Sonarqube9.9 docker 镜像启动后 conf 下的配置文件没有了
docker·容器·eureka
ruofu338 小时前
wsl端是py312,但是项目是py311, 如何下载py311的依赖包(wheels)
python·docker
风中凌乱8 小时前
kafka新版本集群的安装与部署
分布式·kafka
spider_xcxc9 小时前
Docker 实战:容器化多服务应用,Dockerfile 与 Compose 配置全解析
docker·云原生·eureka·虚拟化·容器化
hay_lee9 小时前
Kubernetes StatefulSet:OrderedReady 极简指南
云原生·容器·kubernetes