如果 pod 与 coredns pod 位于不同的节点上,则 K8S 集群 pod 无法解析服务名称

如果 pod 与 coredns pod 位于不同的节点上,则 K8S 集群 pod 无法解析服务名称

我创建了一个 k8s 集群 v1.26.0,kubeadm并使用 Calico 作为 CNI。我使用 helm chart 部署 calico,并按照 Calico 官方页面和 chart 中的步骤进行操作。

容器引擎是containerd。节点 Node 是 Centos 8,我们按照此线程建议 进行iptables配置:firewalld关联

问题是,当我们尝试nslookup使用 dnsutils pod 运行时。它不起作用。当 pod 尝试到达时,我收到超时错误kube-dns.kube-system。如果 dnsutils pod 安排在运行的节点上coredns,我们可以正常 nslookup 服务。我们可以直接 ping pod ip,但是当我们尝试 {Service Name}.{Namespace} 时,这在安排在与运行 coredns 的节点不同的节点上的任何 pod 上都不起作用。

我们检查了 Calico 所需的所有防火墙规则,所有所需端口均已打开并可访问。我们检查了kube-proxy--v=4,它列出了所有服务名称和集群 IP。我们检查了iptables它,似乎有如下规则调试服务页面来自 Kubernetes 官方网站。

我已经为此奋斗了 4-5 天,我真的需要一些建议来调试或了解我们的集群中到底发生了什么。

答案1

卡了一个星期后,我们尝试禁用节点上的防火墙。然后一切都正常了。

谢谢。

相关内容