Kubernetes + Calico + CRIO - Pod 访问问题

Kubernetes + Calico + CRIO - Pod 访问问题

我有一个 Kubernetes 集群(裸机),其中包含一个控制平面和 10 个节点。所有工作节点都相同:相同的操作系统、相同的 kube / crio / iptables / ufw 版本。

我正在使用 Calico,pod CIDR 和服务 CIDR 都很好。

我添加了两个节点,其中一个运行正常,另一个节点出现了一个奇怪的问题:当我在其上运行 pod 并尝试执行 nslookup 时,它可以访问 Coredns 服务。但在某些端点上它超时了,而在其他一些端点上它却可以正常工作。

基本上,如果 Coredns 在节点 1、2、3、4、5 上运行。我将能够到达 1、2 和 3,但不能到达 4 和 5。这将始终保持一致。

我在主机上使用 UFW 作为防火墙。节点之间没有限制(UFW 允许每个节点之间进出访问)。

我尝试思考这个问题已经两天了,但似乎无法理解问题是什么。

以前有人遇到过类似的问题吗?有人有什么想法吗(哪怕是很小的想法)?

根据 Jen Luther Thomas 的回答进行编辑

感谢您的回答。

我做了所有事情。以下是 TCPdump 捕获的 DNS 数据包,在 Wireshark 中可以看到。

当我尝试访问可访问节点时:

在我的故障节点和我可以访问的节点之间 nslookup google.com

当我尝试访问一个无法访问的节点时:

在我的故障节点和我无法访问的节点之间 nslookup google.com

我们发现我无法得到答案。我甚至在 coredns 日志中都没有超时信息。

如果我启动其中一个无法访问的节点的主机上的 HTTP 服务器,我可以从故障节点访问该服务器,因此我知道我的防火墙规则不会阻止主机之间的通信。禁用 UFW 不会改变任何事情。

有任何想法吗?

多谢,

科伦丁

答案1

如果您还没有尝试关闭并重新打开故障节点,我会先尝试一下。

如果行为相同则:

  • 尝试重新启动或执行 iptables -F 以确保没有任何残留的 iptables 规则阻止任何内容。
  • 检查 coredns 日志,查看是否存在超时
  • 如果没有日志,则在故障节点上执行 tcpdump,并确保你可以看到 dns 数据包

UFW 有点多余,所以你可以禁用它并使用主机端点策略

相关内容