问:Rancher + Calico + Ununtu 20.04 裸机-无法访问服务网络10.43.0.10

问题描述

寻求有关在裸机 Ubuntu 20.04 上使用 Rancher + Calico 解决问题的建议。

问题来了。 我们在 KVM(Proxmox) 虚拟机上运行的 Ubuntu 20.04 之上构建的 Rancher (2.5.7) 集群很少。 所有集群都有类似的设置并使用 Calico 作为 CNI。一切都像魅力一样。

有一天,我们决定向其中一个集群添加一个裸机 Ubuntu 20.04 节点。 一切都运行良好——Rancher 显示新节点健康,k8s 在那里调度 pod——但是, 事实证明,该节点上的 pod 无法访问服务网络 - 10.43。具体来说,他们无法访问 10.43.0.10 的 DNS。

如果我在 VM Ubuntu 主机上执行“nc 10.43.0.10 53” - 它通过服务网络连接到 DNS pod 没有问题。如果我试图在金属上做同样的事情 - 连接挂起。 Ubuntu 设置对于 VM 和 BM 完全相同。所有VM和BM都在同一个vlan上。为了实验起见,我们只在 BM 上配置了一个 NIC,没有像绑定之类的花哨的东西。 calicoctl 显示所有已建立的 BGP 对等体。

我尝试创建一个新的集群并重现了相同的问题 - 由 VM 构建的集群没有问题,并且每个 VM(以及那里的 Pod)都可以连接到服务网络,一旦我添加了 BM - BM 在连接到服务时遇到问题网络。

我猜测问题出在 iptables 的某个地方,但我不确定如何解决为什么 iptables 在 BM 和 VM 上会有所不同。

将非常感谢任何建议。

解决方法

经过几个小时的调试后,我们发现问题出在“tcp 卸载”上。 在 VM 上,虚拟 NIC 不支持卸载,因此一切正常。 在 BM 上,我们必须发出

sudo ethtool -K <interface> tx off rx off

禁用卸载并解决了问题。