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

mqxuamgl  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(147)

我用kubeadm创建了一个k8s Cluster v1.26.0,并使用Calico作为CNI。我用Helm Chart部署Calico,并按照Calico官方页面和图表的步骤进行操作。
容器引擎是containerd。节点Node是Centos 8,我们在firewalld中配置了iptables,如下所示:Link
问题是,当我们尝试使用dnsutils pod运行nslookup时。它不起作用。当pod尝试访问kube-dns.kube-system时,我得到一个超时错误。如果在运行coredns的节点上调度了dnsutils pod,则可以正常nslookup服务。我们可以直接ping通pod ip,但是当我们尝试{Service Name}.{Namespace}时,这在调度在与运行coredns的节点不同的节点上的任何pod上都不起作用。
我们检查了Calico所需的所有防火墙规则,并且所有所需端口都是开放和可访问的。我们用--v=4检查了kube-proxy,它列出了其中的所有服务名称和集群ip。我们检查了iptables,它似乎有来自Kubernetes官方网站的Debug Service page规则。
我已经为此挣扎了4-5天,现在我真的需要一些建议来调试或了解这是真的在我们的集群。

68bkxrlz

68bkxrlz1#

我想你应该在每个节点上运行coredns。至少,这是我所有集群的设置方式。

相关问题