同VPC子网下EKS集群无法连接MSK集群故障排查求助
问题排查步骤
1. 优先排查DNS解析问题
你遇到的nslookup解析失败是核心前置问题,DNS不通后续所有连通性测试都会失败,按以下路径排查:
- 检查MSK所在VPC的DNS配置:确保VPC已开启DNS解析和DNS主机名两个选项,这是AWS内部服务域名解析的必要条件
- 确认EKS集群CoreDNS运行状态:执行
kubectl get pods -n kube-system -l k8s-app=kube-dns,查看所有CoreDNS pod是否处于Running状态,无崩溃、反复重启异常 - 检查VPC的DHCP选项集:确认DNS服务器配置为默认的AmazonProvidedDNS(通常为VPC网段+2的地址,如10.0.0.2)
- 分层验证解析能力:先登录EKS工作节点(而非pod内)执行nslookup解析MSK域名:
- 节点能解析、pod不能:问题出在K8s集群DNS配置
- 节点也不能解析:问题出在VPC DNS配置或MSK本身配置
2. 检查MSK集群基础配置
- 确认MSK集群状态为活跃(Active),无创建异常、故障告警
- 确认MSK的访问模式:如果配置为仅限VPC内部访问,要保证你使用的bootstrap地址是VPC内部域名,不是公网访问域名
3. 修正安全组配置误区
- 你目前仅配置了MSK安全组的入站规则,还需检查EKS工作节点、Pod关联的安全组出站规则:确保未限制53(DNS)、9092(Kafka)端口的出站访问
- 确认你填写的SG_ID是EKS工作节点组关联的安全组,而非EKS控制平面的安全组:标注为「EKS created security group applied to cluster control plane」的是控制平面安全组,无法覆盖工作节点的流量放行
- 你之前执行的nc命令未指定目标端口9092,本身会导致测试失败,后续测试请加上正确端口
临时验证方案
先在AWS控制台查询MSK broker的私有IP,替换域名做连通性测试,快速排除DNS问题:
# 替换<MSK_BROKER_PRIVATE_IP>为实际的broker私有IP kubectl run busybox -ti --image=busybox --rm=true --restart=Never -- nc -zv <MSK_BROKER_PRIVATE_IP> 9092
如果用IP能连通,可100%定位为DNS解析问题,优先排查上述DNS相关配置即可。
内容的提问来源于stack exchange,提问作者Felipe Lujan
相关产品推荐
相关产品推荐

