Kubernetes集群如何更换节点名称
本篇文章给大家分享的是有关Kubernetes集群如何更换节点名称,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
Kubernetes集群节点会使用/etc/hostname的机器名称或者DNS,最好在创建集群之前设置妥当域名和机器名。如果在集群设置之后修改节点名称,将会比较麻烦。尤其是如果需要修改第一个节点的名称,会出现创建key和token失败,集群中无法再加入master节点,就需要全部重建集群或者手工修改所有相关的配置文件的参数。
Kubernetes集群更换节点名称目前没有简单的方法,步骤如下:
删除pod
删除节点
清理etcd
创建token
重新加入集群
具体操作如下:
1、删除任务
对节点执行维护操作之前(例如:内核升级,硬件维护等),您可以使用 kubectl drain
安全驱逐节点上面所有的 pod。安全驱逐的方式将会允许 pod 里面的容器遵循指定的 PodDisruptionBudgets
执行优雅的中止。
首先,需要确定希望移除的节点的名称。您可以通过下面命令列出集群里面所有的节点:
kubectl get nodes
接下来,告知 Kubernetes 移除节点:
kubectl drain
执行完成后,如果没有任何错误返回,您可以关闭节点(如果是在云平台上,可以删除支持该节点的虚拟机)。如果在维护操作期间想要将节点留在集群,那么您需要运行下面命令:
kubectl uncordon
然后,它将告知 Kubernetes 允许调度新的 pod 到该节点。
参考:
驱逐节点上的任务pod,https://www.cnblogs.com/weifeng1463/p/10359581.html
⚠️注意:如果未使用drain驱逐所有的待删除节点上的pod,即使node被删除,该pod将一直运行到节点服务重启为止。
2、删除节点
删除该节点:
kubectl delete node podc01
然后问题仍然存在。经查,被删除节点的etcd服务地址仍然在集群中,而且不可访问,升级无法完成。
根据网上的kubeadm说明,使用kubeadm reset将会自动删除etcd的节点信息。
但是,kubeadm reset后,经查,被删除节点的etcd服务地址仍然在集群中,而且不可访问,升级无法完成。
3、手动删除etcd node
查看并手动删除 etcd node信息:
alias etcdv3="ETCDCTL_API=3 etcdctl --endpoints=https://[10.1.1.202]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key"
因为etcd的命令较长,先用个别名简化一下。
将上面的10.1.1.202改为自己的可用master节点IP地址。
更多etcd使用指南,可参考:
Kubernetes的etcd多节点扩容实战技巧
Kubernetes探秘-etcd节点和实例扩容
Kubernetes的etcd数据查看和迁移
Kubernetes探秘-etcd状态数据及其备份
然后,运行:
#查看etcd集群的成员:etcdv3 member list#删除etcd集群的不可访问的成员:etcdv3 member remove XXXXXXXXXX#再次查看etcd集群的成员:etcdv3 member list
kubernetes高可用集群升级的etcd错误
修改/etc/kubernetes下所有配置文件中的server地址为可用节点地址。
4、创建token
在当前的集群中新增节点:
第一步,重新创建certificate key和token:
sudo kubeadm init phase upload-certs --upload-certs### Got:# [upload-certs] Using certificate key:# 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78# Add certificate-key for Multi Master Node.kubeadm token create --print-join-command --certificate-key 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78
5、重新加入集群
增加Worker节点:
kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383
增加master节点:
kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383 --control-plane --certificate-key 440a880086e7e9cbbcebbd7924e6a9562d77ee8de7e0ec63511436f2467f7dde
查看新的节点列表:
kubectl get node -o wide
如果服务没有起来,测试一下:
查看服务版本,kubectl version
查看集群信息,kubectl cluster-info
查看服务状态,sudo systemctl status kubelet
查看服务日志,journalctl -xefu kubelet
以上就是Kubernetes集群如何更换节点名称,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。