通过Terraform创建的私有AKS集群同一命名空间下Pod无法互相通信
故障排查&解决方案
1. 优先检查CIDR重叠问题
你当前配置的Pod CIDR和Service CIDR均为10.0.0.0/16段,Kubenet网络插件要求Pod CIDR、Service CIDR、集群所在VNet的CIDR三者不能重叠,如果存在重叠会直接导致路由混乱,出现Pod互访不通的问题。如果确实配置重叠,需要重新规划网段重建集群。
2. 排查CoreDNS服务异常问题
你执行的域名解析完全失败,首先确认CoreDNS组件状态:
- 执行命令查看CoreDNS Pod运行状态:
kubectl get pods -n kube-system -l k8s-app=kube-dns
如果Pod未处于Running状态,查看Pod日志排查启动失败原因。 - 进入异常Pod查看DNS配置:
cat /etc/resolv.conf
确认nameserver地址是否和你配置的DNS service IP=10.x.x.10一致,如果配置错误需要检查kubelet的DNS参数配置。 - 测试到CoreDNS Pod的连通性,直接ping CoreDNS的Pod IP,如果不通继续往下排查。
3. 排查Calico网络策略问题
你开启了Calico网络策略,默认如果配置了全局/命名空间级的拒绝所有入口流量策略,会阻断Pod之间的互访:
- 执行命令查看所有网络策略:
kubectl get networkpolicy -A
如果存在默认拒绝规则,需要添加对应规则放通同命名空间Pod互访,以及CoreDNS的53端口访问权限。 - 查看Calico节点组件运行状态:
kubectl get daemonset calico-node -n kube-system
确认所有节点上的calico-node Pod全部处于Ready状态,未正常运行的话会导致网络规则下发失败。
4. 排查Kubenet路由同步问题
Kubenet依赖Azure VNet路由表(UDR)同步Pod路由条目,AKS的托管身份需要有路由表的写入权限才能同步路由:
查看集群所在子网关联的路由表,确认是否存在目标地址为Pod CIDR段、下一跳为对应节点IP的路由条目,如果没有则说明路由同步失败,需要给AKS的服务主体分配路由表的网络贡献者权限,重新同步路由。
5. 辅助排查项
- 确认你ping的目标Pod
10.x.x.89处于正常运行状态,Pod内部没有配置iptables DROP规则。 - 确认节点的网络安全组(NSG)放通了Pod CIDR段的所有内部流量。
- 确认你测试的两个Pod是否调度在同一个节点,如果同节点Pod不通优先检查Calico/iptables规则,跨节点不通优先检查VNet路由表和NSG配置。
内容的提问来源于stack exchange,提问作者Satyam Pandey
相关产品推荐
相关产品推荐

