大型集团网站,免费模板网站都有什么,乐清新闻综合频道直播,镇江优化九一目录 1. 移除工作节点(Worker Node)1.1 确定工作节点名称1.2 驱逐工作节点上的Pod1.3 删除工作节点1.4 重置该工作节点 2. 移除控制平面节点(Control Plane Node)2.1 确定控制平面节点名称2.2 驱逐控制平面节点上的Pod2.3 更新 etcd 集群2.4 从集群中删除控制平面节点2.5 重置移… 目录 1. 移除工作节点(Worker Node)1.1 确定工作节点名称1.2 驱逐工作节点上的Pod1.3 删除工作节点1.4 重置该工作节点 2. 移除控制平面节点(Control Plane Node)2.1 确定控制平面节点名称2.2 驱逐控制平面节点上的Pod2.3 更新 etcd 集群2.4 从集群中删除控制平面节点2.5 重置移除的控制平面节点 3. 注意事项 Kubernetes 管理的一个重要方面是在必要时从集群中删除节点。无论您是需要用新节点替换旧节点还是节点变得无响应或出现故障都必须遵循正确的过程以避免潜在的数据丢失或应用程序中断。
1. 移除工作节点(Worker Node)
移除工作节点较为简单工作节点Worker Node又称为子节点从节点等。
1.1 确定工作节点名称
获取所有节点的名称并确认要移除的节点Node
kubectl get nodes1.2 驱逐工作节点上的Pod
使用 kubectl drain 命令驱逐节点上的 Pod
kubectl drain node-name --ignore-daemonsets --delete-emptydir-data参数说明
--ignore-daemonsets忽略 DaemonSet 管理的 Pod DaemonSet 通常在每个节点上运行一个 Pod 副本无法被迁移。--delete-emptydir-data如果 Pod 使用 emptyDir 卷此选项允许删除这些卷中的数据。旧版本的 k8s 为 --delete-local-data。
排空drain过程
将节点标记为不可调度Ready,SchedulingDisabled防止新的 Pod 被调度到该节点。逐个终止节点上的 Pod除了 DaemonSet 的 Pod。Kubernetes 调度器会在集群的其他节点上重新创建这些 Pod。
【注】如果是临时系统维护或者突然不想移除了可以使用下面的命令恢复节点的调度能力
kubectl uncordon node-name1.3 删除工作节点
从集群中删除节点。
kubectl delete node node-name1.4 重置该工作节点
在被移除的控制平面节点中操作。
# 重置该节点
kubeadm resetkubeadm reset 命令用于将节点恢复到安装 kubeadm 之前的状态。这个命令会清除所有与 Kubernetes 相关的配置和数据。
执行过程如下
停止并移除所有 Kubernetes 相关的容器。移除 /etc/kubernetes/ 目录中的所有配置文件。移除 /var/lib/kubelet/ 目录中的内容。移除 /var/lib/etcd 目录如果存在。删除 Kubernetes 相关的系统服务配置如 kubelet.service。
常用参数
--force-f: 即使出现错误也继续执行重置操作。 一般来说使用 kubeadm reset 命令可以满足很多场景但是如果使用了自定义的 CNI、iptables 规则以及 IPVS 模式的 kube-proxy 可能还需要手动清理这些配置。 2. 移除控制平面节点(Control Plane Node)
移除控制平面节点Control Plane Node比较复杂毕竟相当于是大脑控制平面节点又称为主节点从节点等。
移除主节点涉及更新控制平面组件配置步骤如下
2.1 确定控制平面节点名称
获取所有节点的名称并确定要删除的控制平面节点名称。
kubectl get nodes2.2 驱逐控制平面节点上的Pod
与工作节点类似驱逐主节点上的Pod。
kubectl drain master-node-name --ignore-daemonsets --delete-emptydir-data参数说明
--ignore-daemonsets忽略DaemonSet管理的Pod简化驱逐过程确保关键服务 Pod 在节点被驱逐时不会中断--delete-emptydir-data如果 Pod 使用 emptyDir 卷此选项允许删除这些卷中的数据。旧版本的 k8s 为 --delete-local-data。
【注】如果是临时系统维护或者突然不想移除了可以使用下面的命令恢复节点的调度能力
kubectl uncordon master-node-name2.3 更新 etcd 集群
在其他任意一个控制平面节点中操作如果是外置的则在相应的机器上操作。 【注】Look here! 如果该节点中包含 etcd还需要确保更新 etcd 集群配置以移除该节点。如果不包含的话可以跳过此步。 下面的示例为任意控制平面节点中操作
# 查看 etcd
kubectl get pods -n kube-system | grep etcd# 登录集群的任意一个 ETCD Pod通常位于其他控制平面节点
kubectl exec -it etcd-master001 sh -n kube-system# Pod 中设置登录 ETCD 的命令临时设置别名退出后失效
export ETCDCTL_API3
alias etcdctletcdctl --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/server.crt --key/etc/kubernetes/pki/etcd/server.key# 查看集群节点列表
etcdctl member list# 示例
669bc6472fb13679, started, master1, https://192.168.1.19:2380, https://192.168.1.19:2379, false
959c93e3261aadcb, started, master2, https://192.168.1.20:2380, https://192.168.1.20:2379, false
ca5f1f6f780545ba, started, master3, https://192.168.1.23:2380, https://192.168.1.23:2379, false# 删除master3节点
etcdctl member remove ca5f1f6f780545ba如果没有在 etcd 中移除删除节点可能会造成下面的问题
集群不一致etcd 集群将继续尝试与已经不存在的成员通信可能导致性能下降。在做出决策时etcd 仍会考虑这个不再活跃的成员可能影响到达成共识的速度。潜在的稳定性问题如果不移除inactive成员etcd集群可能无法正确管理其成员关系导致稳定性问题。扩展性受限etcd 集群有成员数量限制。保留不活跃的成员会占用这个限额影响未来添加新成员的能力。错误日志和告警系统可能会持续生成关于无法连接到已移除节点的错误日志和告警。恢复和灾难恢复复杂化在需要恢复 etcd 集群时存在的无效成员可能会使过程变得更加复杂。性能影响etcd 可能会持续尝试与不存在的成员通信浪费资源并可能影响整体性能。 【注】虽然短期内不移除 etcd 成员可能不会导致立即的故障但长期来看它可能会影响集群的健康、性能和可管理性。 2.4 从集群中删除控制平面节点
在其他控制平面节点中操作。
# 从集群中删除该 node 节点
kubectl delete node master32.5 重置移除的控制平面节点
在被移除的控制平面节点中操作。
# 重置该节点
kubeadm reset执行过程与移除工作节点一样详细说明参考 1.4 重置该工作节点。
3. 注意事项
确保高可用性移除主节点之前确保集群有足够的高可用性至少有一个以上的备用主节点如果是移除工作节点确保应用支持高可用防止出现业务中断。检查配置文件根据安装方式如 kubeadm、kops、kubespray 等可能需要额外检查和更新配置文件以保证节点的移除工作。清理节点在实际从物理或虚拟机中移除节点之前清理节点上的Kubernetes配置和数据如果服务器有快照的话可以还原快照。保持敬畏之心如果是线上环境还是要有一个敬畏之心保障业务系统的可用性。