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

相关推荐
RingWu3 小时前
微服务架构-全链路追踪
微服务·云原生·架构
音符犹如代码4 小时前
Docker 一键部署带有 TimescaleDB 插件的 PostgreSQL
java·运维·数据库·后端·docker·postgresql·容器
YuanDaima20485 小时前
Docker 工程化安装与核心命令实战
运维·人工智能·docker·微服务·容器·bash
cgsthtm6 小时前
rocky linux 8.10 下的 podman 配置镜像加速
docker·podman·镜像加速·podman-docker·毫秒镜像
牛奔7 小时前
在 Docker 容器里测试外部域名延迟
运维·docker·容器
Elastic 中国社区官方博客7 小时前
Kubernetes 可观测性:用于更安全 EKS 故障排查的 MCP 专家 agents
大数据·elasticsearch·搜索引擎·云原生·容器·kubernetes·全文检索
颖火虫盟主7 小时前
Claude Code Cron 定时任务:从入门到自动化
运维·docker·自动化
IT策士8 小时前
深入浅出:使用 Gunicorn + Nginx + Docker 将 Django 项目部署到云服务器
nginx·docker·gunicorn
jran-8 小时前
Docker 数据卷&应用部署
运维·docker·容器
jran-8 小时前
Docker dockerfile镜像制作&compose服务编排&私有仓库
java·docker·容器