我在kubernetes集群中有一个正在运行的节点。有没有办法可以改名呢?
我试过
但节点不会开始。
任何人都知道应该怎么做?
由于
答案 0 :(得分:4)
Usualy它的kubelet负责以特定名称注册节点,因此您应该更改节点的kubelet配置,然后它应该弹出为新节点。
答案 1 :(得分:2)
目前无法更改节点名称,这需要您删除并重新加入该节点。 您需要确保将主机名更改为新名称,然后删除该节点,将其重置并重新加入。
(您会注意到,使用命令:kubectl edit node,如果尝试保存名称,则会收到错误消息: 您所做的更改的副本已存储到“ /tmp/kubectl-edit-qlh54.yaml” 错误:apiVersion,种类和名称中的至少一项已更改 )
理想情况下,您已删除其上正在运行的吊舱。
您可以尝试运行kubectl drain <node_name_to_rename>
。如果还没有完成,后果自负。 --ignore-daemon-sets可用于忽略无法驱逐的吊舱的可能问题。
简而言之,对于已重命名并且不在CentOS 7上的集群中的节点:
kubectl delete node <original-nodename>
然后以根用户身份在要重新加入的节点上:
kubeadm reset
检查输出,并查看其是否适用于您的设置(以备进一步清理)。
现在在主节点上生成加入命令:
export KUBECONFIG=/etc/kubernetes/admin.conf #(or wherever you have it)
kubeadm token create --print-join-command
在刚刚重置的工作节点上运行输出:
kubeadm join <masternode_ip_address>:6443 --token somegeneratedtoken --discovery-token-ca-cert-hash sha256:somesha256hashthatyougotfromtheabovecommand
如果您运行kubectl get nodes
,它将立即以新名称显示
在我的情况下输出:
W0220 10:43:23.286109 11473 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
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.
享受重命名的节点!