将节点添加到 Kubernetes 中的现有集群

Posted

技术标签:

【中文标题】将节点添加到 Kubernetes 中的现有集群【英文标题】:Adding node to existing cluster in Kubernetes 【发布时间】:2015-11-26 03:00:02 【问题描述】:

我有一个运行在 2 台机器(master-minion 节点和 minion 节点)上的 kubernetes 集群。我想在不破坏当前设置的情况下添加一个新的 minion 节点,有什么办法吗?

我看到当我尝试添加新节点时,其他节点上的服务会停止它,因此我必须在将新节点部署到现有集群之前停止服务。

【问题讨论】:

您能否更新问题,详细说明您正在使用的kuberntes 版本和平台? 这可能与我之前回答的重复:***.com/questions/29654772/… 正如 Navid 所要求的,要获得确切如何做的答案,需要更多地了解您如何部署当前基础架构。 【参考方案1】:

在我的情况下,问题是由于现有的错误 Route53“A”记录。 一旦它被更新为指向 API 服务器的内部 IP,kube-proxy 就能够访问主节点并且节点出现在列表中 (kubectl get nodes)。

【讨论】:

【参考方案2】:

要在最新版本中执行此操作(在 1.10.0 上测试),您可以在主节点上发出以下命令:

kubeadm token create --print-join-command

然后它会打印出一个新的连接命令(就像你在kubeadmn init之后得到的那个):

kubeadm join 192.168.1.101:6443 --token tokentoken.lalalalaqyd3kavez --discovery-token-ca-cert-hash sha256:complexshaoverhere

【讨论】:

对于任何最新版本的 k8s,这是正确答案。 如果集群不是使用 kubeadm 创建的怎么办? 我认为只有 kubeadm 可以创建新的 join 命令。您是如何创建集群的?【参考方案3】:

你需要在一个新的 minion 上运行 kubelet 和 kube-proxy,在 params 中指明 api 地址。

例子:

kubelet --api_servers=http://<API_SERVER_IP>:8080 --v=2 --enable_server --allow-privileged
kube-proxy --master=http://<API_SERVER_IP>:8080 --v=2

在此之后,您应该会在

中看到新节点
kubectl get no

【讨论】:

以上是关于将节点添加到 Kubernetes 中的现有集群的主要内容,如果未能解决你的问题,请参考以下文章

如何将 mnesia 节点添加到现有集群

K8s - 将 kubeadm 添加到现有集群

将节点添加到现有 Cassandra 集群

Postgres XL 将数据节点添加到现有集群

将节点添加到 Cassandra 集群会导致现有节点上的 CPU 过载

Kubernetes-集群扩容增加node节点