Kubernetes:将Kops集群合并到本地Kubeadm集群
我们目前有2个Kubernetes集群:Kubernetes:将Kops集群合并到本地Kubeadm集群,kubernetes,kubeadm,kops,Kubernetes,Kubeadm,Kops,我们目前有2个Kubernetes集群: 一个在AWS上运行Kops的设置 一个在我们自己的硬件上运行Kubeadm的设置 我们希望将它们结合起来,只需要管理一个集群 主服务器可能会出现在AWS或我们的服务器上,两者都很好 我们无法找到将配置了一个群集的节点添加到另一个群集的方法 kubeadm在使用KOP设置的节点上不可用,因此我们无法执行例如kubeadm令牌创建--print join命令 Kops似乎没有让我们添加任意节点的实用程序,请参阅 这个问题提出了同样的问题,但没有得到回
- 一个在AWS上运行Kops的设置
- 一个在我们自己的硬件上运行Kubeadm的设置
在使用KOP设置的节点上不可用,因此我们无法执行例如kubeadm
kubeadm令牌创建--print join命令
- Kops似乎没有让我们添加任意节点的实用程序,请参阅
这个问题提出了同样的问题,但没有得到回答:您可以手动加入节点,但这确实不是一种推荐的做法 如果您使用的是kubeadm,那么您可能已经在workers上安装了所有相关组件,以便它们以有效的方式加入。我想说的是,接下来的过程是: 在有问题的on prem上运行
kubeadm reset
登录到kops节点,并检查kubelet配置:
systemctl cat kubelet
在这里,您将看到kubelet配置在/etc/sysconfig/kubelet
中指定。您需要复制该文件,并确保on prem节点在其systemd启动配置中包含该文件
将相关配置复制到on prem节点。您需要删除对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"
DAEMON_参数=“--allow privileged=true--cgroup root=/--cluster dns=100.64.0.10--cluster domain=cluster.local--enable debug handlers=true--feature gates=expericalCriticalPodAnnotation=true--hostname override=--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/cni-conf dir=/etc/cni/net.d/“
HOME=“/root”
此外,请检查kubelet-kubeconfig配置(应位于/var/lib/kubelet/kubeconfig
)。此配置告诉kubelet要注册哪个API服务器。请确保on prem节点上存在此配置
这将使您的节点加入API。在完成此过程时,您可能需要进行一些调试
但我确实不建议这样做,原因如下:
- 除非您以合理的方式使用节点标签,否则在配置云元素时将出现问题。kubelet将定期与AWS API交互,因此如果您尝试使用LoadBalancer类型的服务或任何云卷,则需要将工作负载固定到特定节点。您需要大量使用
- Kubernetes工作人员的设计不是通过WAN进行连接。您可能会在某个时候看到网络延迟等问题
- 如果您选择走这条路线,则需要确保在两个方向上都配置了TLS,用于API kubelet通信或VPN