首页 文章

Kubernetes:将Kops集群与内部部署的Kubeadm集群相结合

提问于
浏览
0

我们目前有2个Kubernetes集群:

  • 在AWS上运行Kops的一个设置

  • 在我们自己的硬件上运行Kubeadm的一个设置

我们希望将它们组合成只有一个集群来管理 .

主人最终可能在AWS或我们的服务器上,两者都很好 .

我们找不到将一个群集配置的节点添加到另一个群集的方法 .

这个问题提出了同样的问题,但没有答案:https://github.com/kubernetes/kops/issues/5024

1 回答

  • 1

    您可以手动加入节点,但这不是推荐的做事方式 .

    如果您正在使用kubeadm,您可能已经在工作程序上安装了所有相关组件,以使它们以有效的方式加入 . 我要说的是要遵循的流程:

    在有问题的本地上运行 kubeadm reset

    登录kops节点,检查kubelet配置:

    systemctl cat kubelet

    在这里,您将看到kubelet配置在 /etc/sysconfig/kubelet 处指定 . 您需要复制该文件并确保本地节点在其systemd启动配置中具有该文件

    将相关配置复制到本地节点 . 您需要删除对AWS Cloud 提供程序内容的任何引用,并确保主机名有效 . 这是我从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 . 在完成此过程时,您可能需要进行一些调试 .

    我真的不建议这样做,原因如下:

    • 除非您以理智的方式使用节点标签,否则您需要将工作负载固定到特定节点 . 你需要大量使用taints and tolerations.

    • Kubernetes工作人员可能会在某些时候看到网络延迟等问题

    • 如果您选择沿着此路线前进,则需要确保在两个方向上配置了用于API < - > kubelet通信或VPN的TLS .

相关问题