问题描述
我正在尝试安装一个具有一个主节点和两个工作节点的 Kubernetes 集群。
我为此目的购买了 3 个在 Ubuntu 21.10 上运行的虚拟机。在主节点中,我安装了 kubeadm:1.21.4
、kubectl:1.21.4
、kubelet:1.21.4
和 docker-ce:20.4
。
我按照 this guide 安装了集群。唯一的区别是在我的 init 命令中我没有提到 --control-plane-endpoint
。我使用了 calico CNI v3.19.1
和 docker for CRI Runtime。
安装集群后,我部署了 minio pod 并将其作为 NodePort 公开。
pod 部署在工作节点 (10.72.12.52
) 中,我的主节点 IP 是 10.72.12.51
)。
在前两个小时,我可以通过所有三个 IP(10.72.12.51:30981
、10.72.12.52:30981
、10.72.13.53:30981
)访问登录页面。但是,两个小时后,我无法通过 10.72.12.51:30981
和 10.72.13.53:30981
访问该服务。现在我只能从它运行的节点 (10.72.12.52
) 访问该服务。
我已禁用防火墙并在 calico.conf
中添加了 /etc/NetworkManager/conf.d
文件,其内容如下:
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico
我在可能导致此问题的设置中遗漏了什么?
解决方法
这是为了更好的可见性而发布的社区 wiki 答案。随意扩展它。
正如@AbhinavSharma 提到的,问题是通过从 Calico 切换到 Flannel CNI 来解决的。
有关法兰绒本身的更多信息,请参见 here。