无法使用 master/worker IP 连接到 k8s 集群

问题描述

我正在尝试安装一个具有一个主节点和两个工作节点的 Kubernetes 集群。

我为此目的购买了 3 个在 Ubuntu 21.10 上运行的虚拟机。在主节点中,我安装了 kubeadm:1.21.4kubectl:1.21.4kubelet:1.21.4docker-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:3098110.72.12.52:3098110.72.13.53:30981)访问登录页面。但是,两个小时后,我无法通过 10.72.12.51:3098110.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