Bitnami Zookeeper与Kafka Helm Chart部署失败求助
我按照Bitnami官方教程在Kubernetes中部署可扩展的Kafka与Zookeeper集群,安装Kafka Helm Chart后,Zookeeper Pod运行正常,但Kafka Pod始终无法就绪,Pod状态如下:
NAME READY STATUS RESTARTS AGE kafka-0 0/1 Running 4 (28s ago) 3m10s kafka-1 0/1 Running 4 (27s ago) 3m10s kafka-2 0/1 Running 4 (28s ago) 3m10s zookeeper-0 1/1 Running 0 13m zookeeper-1 1/1 Running 0 13m zookeeper-2 1/1 Running 0 13m
kafka-0的日志输出:
andredemoeller:vscan % kubectl logs kafka-0 -c kafka kafka 16:54:10.96 kafka 16:54:10.99 Welcome to the Bitnami kafka container kafka 16:54:11.01 Subscribe to project updates by watching https://github.com/bitnami/containers kafka 16:54:11.03 Submit issues and feature requests at https://github.com/bitnami/containers/issues kafka 16:54:11.05 kafka 16:54:11.07 INFO ==> ** Starting Kafka setup ** kafka 16:54:12.35 WARN ==> You set the environment variable ALLOW_PLAINTEXT_LISTENER=yes. For safety reasons, do not use this flag in a production environment. kafka 16:54:12.56 INFO ==> Initializing Kafka... kafka 16:54:12.71 INFO ==> No injected configuration files found, creating default config files kafka 16:54:23.37 INFO ==> Configuring Kafka for inter-broker communications with PLAINTEXT authentication. kafka 16:54:23.46 WARN ==> Inter-broker communications are configured as PLAINTEXT. This is not safe for production environments. kafka 16:54:23.49 INFO ==> Configuring Kafka for client communications with PLAINTEXT authentication. kafka 16:54:23.61 WARN ==> Client communications are configured using PLAINTEXT listeners. For safety reasons, do not use this in a production environment. kafka 16:54:23.90 INFO ==> ** Kafka setup finished! ** kafka 16:54:24.10 INFO ==> ** Starting Kafka **
Pod事件信息:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 112s default-scheduler Successfully assigned default/kafka-0 to minikube Normal Created 70s (x2 over 111s) kubelet Created container kafka Normal Started 70s (x2 over 110s) kubelet Started container kafka Warning Unhealthy 31s (x10 over 101s) kubelet Readiness probe failed: dial tcp 10.244.0.219:9092: connect: connection refused Warning Unhealthy 31s (x6 over 91s) kubelet Liveness probe failed: dial tcp 10.244.0.219:9092: connect: connection refused Normal Killing 31s (x2 over 71s) kubelet Container kafka failed liveness probe, will be restarted Normal Pulled 30s (x3 over 111s) kubelet Container image "docker.io/bitnami/kafka:3.4.0-debian-11-r2" already present on machine
已确认设置了--set externalZookeeper.servers=ZOOKEEPER-SERVICE-NAME参数,不清楚如何修复探针检测失败的问题。
排查与修复步骤
验证Kafka与Zookeeper的连通性
进入任意Kafka Pod,执行telnet命令测试Zookeeper服务的2181端口:kubectl exec -it kafka-0 -- telnet <ZOOKEEPER-SERVICE-NAME> 2181若无法连通,检查Zookeeper的Service名称是否正确,或是否存在网络策略阻断了Pod间访问。
调整探针的启动延迟与检测周期
Kafka启动需要一定初始化时间,默认探针可能触发过早。通过Helm参数调整探针配置:helm upgrade kafka bitnami/kafka \ --set livenessProbe.initialDelaySeconds=120 \ --set livenessProbe.periodSeconds=30 \ --set readinessProbe.initialDelaySeconds=60 \ --set readinessProbe.periodSeconds=10根据实际环境调整延迟数值,给Kafka足够的启动时间。
检查Kafka的Zookeeper配置注入情况
查看Kafka Pod的环境变量,确认Zookeeper地址是否正确:kubectl exec -it kafka-0 -- env | grep ZOOKEEPER若地址错误,重新执行Helm安装命令,确保
externalZookeeper.servers的值为Zookeeper的Headless Service名称(通常是zookeeper-headless)。查看Kafka完整启动日志
当前日志仅显示启动开始,需追踪后续日志确认是否有启动失败的具体错误:kubectl logs -f kafka-0 -c kafka常见问题包括Zookeeper会话超时、存储卷权限不足、目录无法写入等。
检查存储卷挂载状态
确认Kafka Pod的存储卷是否正常挂载:kubectl describe pod kafka-0 | grep Volumes -A 10存储卷挂载失败会导致Kafka无法写入数据目录,进而启动失败。
内容的提问来源于stack exchange,提问作者flowermia

