You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroK8s集群跨节点Pod能否通过ClusterIP通信?

ClusterIP跨节点通信问题解答

ClusterIP是否支持跨节点通信?

ClusterIP是Kubernetes默认的集群内部服务类型,完全支持跨节点Pod访问。它的核心作用就是为集群内的服务提供一个统一的虚拟IP,让所有节点上的Pod都能通过这个IP访问后端服务,无论后端Pod部署在哪个节点上。

排查思路

1. 验证跨节点Pod基础连通性

  • 执行microk8s kubectl get pods -o wide获取两个Nginx Pod的实际IP
  • 在nginx-two所在节点,直接用curl <nginx-one-pod-ip>:80测试,确认跨节点Pod之间的基础网络是否正常;如果连Pod IP都无法访问,说明CNI网络插件存在问题

2. 检查CNI网络插件状态

MicroK8s默认使用Calico作为CNI插件,重点检查:

  • 执行microk8s kubectl get pods -n kube-system -l k8s-app=calico-node,确保所有节点的calico-node Pod都处于Running状态
  • 查看calico-node Pod日志:microk8s kubectl logs -n kube-system <calico-node-pod-name> -c calico-node,排查是否有网络配置错误、节点间隧道建立失败等日志

3. 排查节点防火墙与iptables规则

  • 检查Ubuntu系统的ufw防火墙状态:sudo ufw status,如果防火墙开启,需放行Kubernetes集群相关端口(如6443、10250、Pod网络段等)
  • 验证iptables转发规则:sudo iptables-save | grep 10.152.183.124,确认是否存在针对目标ClusterIP的转发规则
  • 检查kube-proxy组件状态:microk8s kubectl get pods -n kube-system -l k8s-app=kube-proxy,确保所有节点的kube-proxy Pod正常运行,查看日志排查规则同步异常

4. 定位DNS解析问题

  • 检查CoreDNS状态:microk8s kubectl get pods -n kube-system -l k8s-app=coredns,确认Pod处于Running状态
  • 在nginx-two Pod内执行nslookup nginx-one-cluster-ip-svc,查看是否能正常解析到服务IP;若解析失败,查看CoreDNS日志:microk8s kubectl logs -n kube-system <coredns-pod-name>
  • 验证Pod的DNS配置:microk8s kubectl exec <nginx-two-pod-name> -- cat /etc/resolv.conf,确认nameserver指向集群DNS服务IP(通常为10.152.183.10)

5. 确认服务与端点关联状态

  • 执行microk8s kubectl get svc nginx-one-cluster-ip-svc,确认ClusterIP为10.152.183.124,端口映射(8080→80)配置正确
  • 执行microk8s kubectl get endpoints nginx-one-cluster-ip-svc,检查是否正确关联了nginx-one Pod的IP和80端口,确保端点状态正常

6. 检查集群节点状态与通信端口

  • 执行microk8s kubectl get nodes,确保两个节点都处于Ready状态
  • 测试节点间集群通信端口的连通性:用nc -zv <节点IP> <端口>测试6443(API Server)、10250(kubelet)、2379-2380(etcd)等关键端口是否开放

内容的提问来源于stack exchange,提问作者Dan McCoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:35:17