2

我成功地在我的虚拟机中设置了一个控制平面,主节点。然后我复制了 vm,试图将复制的 vm 加入到现有的 kubernete 集群中。

问题是原始 vm(node) 的名称是 new-master-1,而复制的节点具有相同的名称。即使在我vi /etc/hostname将复制的 vm 的名称更改为 new-master-2 之后kubectl get nodes,在复制的 vm 中运行后,输出名称仍然是new-master-1

root@new-master-2:/home/hzg# kubectl get nodes
NAME           STATUS   ROLES                  AGE   VERSION
new-master-1   Ready    control-plane,master   32h   v1.20.2

我想我只能在看到名称更改为之后,才能将复制的 vm 作为另一个主节点加入集群new-master-2,对吧?如何更改节点的名称?

4

1 回答 1

1

TL;博士:

运行:kubeadm join- 根据输出调整此命令kubeadm token create并添加标志--control-plane--node-name如需要。在继续之前查看kubeadm join 。


kubelet特定名称注册节点。通常您可以在 Live Cluster 中重新配置节点的 Kubelet。但它不适用于更改节点的名称。如果你尝试使用kubectl edit node它,你会得到一个错误:

error: At least one of apiVersion, kind and name was changed

不过有办法。您需要更改主机名,然后删除节点,重置并重新加入它。

以下是步骤。在需要更改名称的节点上:

  • 更改主机名。

  • 运行:(kubectl delete node <nodename>请注意,您仍然必须使用旧的节点名称)

  • 运行:(kubeadm reset如果root需要)

现在,在原始主节点上:

  • 跑:export KUBECONFIG=/path/to/admin.conf

  • 跑:kubeadm token create --print-join-command

回到重命名的节点:

  • 运行:kubeadm join- 根据输出调整此命令kubeadm token create并添加标志--control-plane--node-name如需要。在继续之前查看kubeadm join 。

您可以查看此资源以获取教程视频。


例子:

kube-master:~$ kubectl get nodes
NAME          STATUS   
kube-master   Ready    
kube-node-1   Ready    
kube-node-2   Ready 



kube-master:~$ kubectl delete node kube-node-2
node "kube-node-2" deleted



kube-node-2:~$ sudo kubeadm reset
[reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
[reset] Are you sure you want to proceed? [y/N]: y



kube-node-2:~$ sudo kubeadm join --node-name kube-node-22 <rest-of-the-join-command>

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.



kube-master:~$ kubectl get nodes
NAME           STATUS   
kube-master    Ready    
kube-node-1    Ready    
kube-node-22   Ready 

结果:名字kube-node-2成功改成kube-node-22

于 2021-03-09T13:10:07.053 回答