我们目前有2个Kubernetes集群:
-
在AWS上运行Kops的一个设置
-
在我们自己的硬件上运行Kubeadm的一个设置
我们希望将它们组合成只有一个集群来管理 .
主人最终可能在AWS或我们的服务器上,两者都很好 .
我们找不到将一个群集配置的节点添加到另一个群集的方法 .
-
kubeadm
在使用Kops设置的节点上不可用,所以我们不能这样做kubeadm token create --print-join-command
-
Kops似乎没有让我们添加任意节点的工具,请参阅how to add an node to my kops cluster? (node in here is my external instance)
这个问题提出了同样的问题,但没有答案:https://github.com/kubernetes/kops/issues/5024
1 回答
您可以手动加入节点,但这不是推荐的做事方式 .
如果您正在使用kubeadm,您可能已经在工作程序上安装了所有相关组件,以使它们以有效的方式加入 . 我要说的是要遵循的流程:
在有问题的本地上运行
kubeadm reset
登录kops节点,检查kubelet配置:
systemctl cat kubelet
在这里,您将看到kubelet配置在
/etc/sysconfig/kubelet
处指定 . 您需要复制该文件并确保本地节点在其systemd启动配置中具有该文件将相关配置复制到本地节点 . 您需要删除对AWS Cloud 提供程序内容的任何引用,并确保主机名有效 . 这是我从kops节点复制的示例配置,并进行了修改:
另外,检查kubelet kubeconfig配置(它应该在
/var/lib/kubelet/kubeconfig
) . 这是配置,告诉kubelet注册哪个API服务器 . 确保在本地节点上存在这应该让您的节点加入API . 在完成此过程时,您可能需要进行一些调试 .
我真的不建议这样做,原因如下:
除非您以理智的方式使用节点标签,否则您需要将工作负载固定到特定节点 . 你需要大量使用taints and tolerations.
Kubernetes工作人员可能会在某些时候看到网络延迟等问题
如果您选择沿着此路线前进,则需要确保在两个方向上配置了用于API < - > kubelet通信或VPN的TLS .