EKS集群中Kafka与Zookeeper连接故障排查求助
问题分析与解决方案
问题根源
你的部署存在两个核心冲突:
- 同时启用了Kafka Chart自带的Zookeeper(
zookeeper.enabled=true)和外部独立部署的Zookeeper,导致集群内存在两套独立的Zookeeper集群,Kafka Broker无法正确绑定到预期的Zookeeper服务,引发DNS解析和内部连接失败。 - Kafka部署参数中
replicaCount=3与broker.replicaCount=1冲突,导致Broker集群规模配置混乱。
解决步骤
1. 清理现有错误部署
helm uninstall kafka zookeeper -n kafka # 可选:清理残留的持久化存储,避免旧数据干扰 kubectl delete pvc -n kafka --all
2. 重新部署独立Zookeeper集群
helm install zookeeper bitnami/zookeeper \ --set replicaCount=3 \ --set auth.enabled=false \ --set allowAnonymousLogin=true \ --set persistence.accessModes={ReadWriteOnce} \ --set persistence.size=1Gi \ --set podLabels."app\.kubernetes\.io/version"="1.0" \ -n kafka
3. 部署非Kraft模式的Kafka(禁用内部Zookeeper,绑定外部Zookeeper)
helm install kafka bitnami/kafka \ --set zookeeper.enabled=false \ --set controller.replicaCount=0 \ --set replicaCount=3 \ --set kraft.enabled=false \ --set autoCreateTopicsEnable=true \ --set persistence.accessModes={ReadWriteOnce} \ --set persistence.size=1Gi \ --set podLabels."app\.kubernetes\.io/version"="1.0" \ --set externalZookeeper.servers=zookeeper.kafka.svc.cluster.local \ -n kafka
验证操作
- 等待所有Pod进入Running状态:
kubectl get po -n kafka
- 使用集群内的kafka-client测试消息收发:
# 进入客户端Pod kubectl exec -it kafka-client -n kafka -- bash # 发送测试消息 kafkacat -b kafka.kafka.svc.cluster.local:9092 -t test-topic -P <<< "Hello Kafka" # 消费测试消息 kafkacat -b kafka.kafka.svc.cluster.local:9092 -t test-topic -C
内容的提问来源于stack exchange,提问作者SayaliT
相关产品推荐
相关产品推荐

