k3s环境下Kafka就绪探针失败、9093端口不通问题排查求助
排查思路
1. 端口监听与网络策略排查
- 登录
kafka-app-0的Pod内部,执行ss -tulpn | grep 9093确认端口是否正常监听,检查监听地址是不是0.0.0.0或者PodIP,如果绑定的是127.0.0.1会导致集群内部其他节点访问不通 - 检查k3s集群的全局网络策略、对应命名空间下的NetworkPolicy资源,确认是否允许9093端口的跨Pod访问,k3s默认的flannel或者calico插件如果配置了默认拒绝所有入站流量的规则会导致端口不通
- 检查k3s节点的iptables规则、ufw/firewalld等主机层面防火墙,确认9093端口的流量没有被宿主机拦截
2. Kafka配置校验
- 核对Kafka的
listeners和advertised.listeners配置,确认9093端口对应的监听器绑定的地址是正确的集群内部可访问地址。minikube是单节点环境,不会涉及跨节点的DNS解析和路由问题,多节点k3s集群如果监听器配置的是节点本地地址就会出现跨节点访问失败 - 检查Kafka配置里的
inter.broker.listener.name是不是指向9093端口对应的监听器,确保副本之间同步流量走的是正确的端口 - 查看
kafka-app-0的Pod日志,确认启动过程中没有监听器绑定失败、权限不足相关的报错
3. k3s集群DNS与服务发现校验
- 你之前ping的FQDN是
kafka-app-0.kafka-app.avc.svc.cluster.local,nc用的是kafka-app-0.kafka-app.svc.cluster.local,检查两个FQDN的命名空间是否一致,确认StatefulSet对应的Headless Service是否创建在正确的命名空间下 - 在执行nc命令的Pod内部执行
nslookup kafka-app-0.kafka-app.avc.svc.cluster.local,确认解析到的IP和kafka-app-0的PodIP完全一致,避免DNS解析错误导致访问到错误地址
4. 就绪探针逻辑校验
- 查看当前就绪探针的实现逻辑,确认探针是检测9093端口还是其他端口,如果探针校验的是Kafka的元数据接口,需要确认当前Kafka节点是否已经成功注册到Zookeeper
- 手动执行就绪探针对应的命令,比如如果是
kafka-broker-api-versions.sh相关的命令,直接在Pod内部执行看返回结果,确认失败原因
5. 存储与注册状态排查
- 检查
kafka-app-0使用的PV/PVC权限,确认Kafka进程对数据目录有读写权限,首个副本启动成功但未完成元数据初始化也会导致端口无法对外提供服务 - 查看Zookeeper的节点数据,确认
/brokers/ids路径下是否已经有第一个Kafka节点的注册信息,没有注册成功的话Broker不会对外暴露服务端口
内容的提问来源于stack exchange,提问作者Krik
相关产品推荐
相关产品推荐

