k8s集群节点下线流程操作步骤

in kubernetes with 0 comment

当前集群节点信息如下,本次打算先下线node1和master2两个节点。

[root@master1 ~]# kubectl get nodes
NAME            STATUS   ROLES           AGE   VERSION
k8s-master-01   Ready    control-plane   17h   v1.27.6
k8s-master-02   Ready    control-plane   17h   v1.27.6
k8s-master-03   Ready    control-plane   18h   v1.27.6
k8s-node-01     Ready    <none>          14h   v1.27.6
k8s-node-02     Ready    <none>          14h   v1.27.6
master1         Ready    control-plane   61d   v1.27.6
master2         Ready    control-plane   57d   v1.27.6
master3         Ready    control-plane   57d   v1.27.6
node1           Ready    <none>          61d   v1.27.6
node2           Ready    <none>          61d   v1.27.6

配置下线的节点为不可调度状态

[root@master1 ~]# kubectl cordon node1 master2
node/node1 cordoned
node/master2 cordoned
[root@master1 ~]# kubectl get nodes           
NAME            STATUS                     ROLES           AGE   VERSION
k8s-master-01   Ready                      control-plane   17h   v1.27.6
k8s-master-02   Ready                      control-plane   17h   v1.27.6
k8s-master-03   Ready                      control-plane   18h   v1.27.6
k8s-node-01     Ready                      <none>          14h   v1.27.6
k8s-node-02     Ready                      <none>          14h   v1.27.6
master1         Ready                      control-plane   61d   v1.27.6
master2         Ready,SchedulingDisabled   control-plane   57d   v1.27.6    #不可调度模式
master3         Ready                      control-plane   57d   v1.27.6
node1           Ready,SchedulingDisabled   <none>          61d   v1.27.6    #不可调度模式
node2           Ready                      <none>          61d   v1.27.6

驱逐下线节点上的Pod

#此处有两种操作方式
1.通过执行drain命令驱逐,这样做的方式是能快速进行资源驱逐,缺点是生产环境下如果节点上资源较多,会产生大量的Pod同时删除和创建,对业务会有影响。

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data --force
kubectl drain master2 --ignore-daemonsets --delete-emptydir-data --force

2.获取节点上的Pod名称,手动删除Pod资源后再执行后续删除节点

[root@master1 ~]# kubectl get pod -A -owide|grep -E 'node1|master2'

#将上述查询出来的资源分别进行delete删除操作,以下是删除命令,根据实际pod做删除即可

kubectl delete pod -n <namespace> <POD_NAME>

#剔除集群中节点

kubectl delete pod master2 node1

#查看最新集群节点信息
1712802158266.jpg

清理下线节点上的相关资源数据等

#清空K8s集群设置
kubeadm reset -f
ipvsadm --clear && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
rm -f $HOME/.kube/config
#删除本机镜像
crictl images -q|xargs crictl rmi
#关闭服务并卸载kubelet相关组件
systemctl stop kubelet
yum -y remove kubectl cri-tools kubelet kubeadm kubernetes-cni
rm -rf /etc/kubernetes/ /var/lib/kubelet/
reboot

本篇至此结束!

Responses