我们目前有 2 个 Kubernetes 集群:
我们希望将它们组合起来,只需要管理一个集群。
主服务器最终可能位于 AWS 或我们的服务器上,两者都很好。
我们找不到一种方法将配置有一个集群的节点添加到另一个集群。
这个问题提出了同样的问题,但没有得到解答:https://github.com/kubernetes/kops/issues/5024
您可以手动加入节点,但这确实不是推荐的做法。
如果您使用 kubeadm,您可能已经在工作人员上安装了所有相关组件,以便他们以有效的方式加入。我想说的流程是:
run kubeadm reset
在相关的本地部署上
登录 kops 节点,检查 kubelet 配置:
systemctl cat kubelet
在这里,您将看到 kubelet 配置指定于/etc/sysconfig/kubelet
。您需要复制该文件并确保本地节点的 systemd 启动配置中包含该文件
将相关配置复制到本地节点。您需要删除对 AWS 云提供商内容的所有引用,并确保主机名有效。这是我从 kops 节点复制并修改的示例配置:
DAEMON_ARGS="--allow-privileged=true --cgroup-root=/ --cluster-dns=100.64.0.10 --cluster-domain=cluster.local --enable-debugging-handlers=true - --feature-gates=ExperimentalCriticalPodAnnotation=true --hostname-override=<my_dns_name> --kubeconfig=/var/lib/kubelet/kubeconfig --network-plugin=cni --node-labels=kops.k8s.io/instancegroup=onpremnodes,kubernetes.io/role=node,node-role.kubernetes.io/node= --non-masquerade-cidr=100.64.0.0/10 --pod-infra-container-image=gcr.io/google_containers/pause-amd64:3.0 --pod-manifest-path=/etc/kubernetes/manifests --register-schedulable=true --v=2 --cni-bin-dir=/opt/cni/bin/ --cni-conf-dir=/etc/cni/net.d/"
HOME="/root"
另外,检查 kubelet kubeconfig 配置(它应该位于/var/lib/kubelet/kubeconfig
)。这个配置告诉 kubelet 注册到哪个 API 服务器。确保本地节点上存在
这应该会让您的节点加入 API。在执行此过程时,您可能需要进行一些调试。
但我真的不建议这样做,原因如下:
- 除非您以合理的方式使用节点标签,否则在配置云元素时将会遇到问题。 kubelet 将定期与 AWS API 交互,因此,如果您尝试使用 LoadBalancer 类型的服务或任何云卷,则需要将工作负载固定到特定节点。你需要大量使用污点和容忍。
- Kubernetes 工作线程并非设计用于通过 WAN 连接。您可能会在某个时候看到网络延迟等问题
- 如果您确实选择走这条路线,则需要确保为 API kubelet 通信或 VPN 双向配置了 TLS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)