千家信息网

Kubernetes集群如何更换节点名称

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇文章给大家分享的是有关Kubernetes集群如何更换节点名称,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Kubernetes集群
千家信息网最后更新 2024年11月26日Kubernetes集群如何更换节点名称

本篇文章给大家分享的是有关Kubernetes集群如何更换节点名称,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Kubernetes集群节点会使用/etc/hostname的机器名称或者DNS,最好在创建集群之前设置妥当域名和机器名。如果在集群设置之后修改节点名称,将会比较麻烦。尤其是如果需要修改第一个节点的名称,会出现创建key和token失败,集群中无法再加入master节点,就需要全部重建集群或者手工修改所有相关的配置文件的参数。

Kubernetes集群更换节点名称目前没有简单的方法,步骤如下:

  1. 删除pod

  2. 删除节点

  3. 清理etcd

  4. 创建token

  5. 重新加入集群

具体操作如下:

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集群如何更换节点名称,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0