设置k8s节点不调度pod和节点驱逐的方法

在k8s的项目中今天需要停止某一节点的服务,对该节点进行更新、升级、或者是更换硬件时,这个时候需要对节点进行设置,让其不参与k8s的调度,具体的设置方法如下

使用cordon设置节点不可调度

kubectl cordon node_name
kubectl uncordon node_name #取消不可调度

当使用cordon来设置节点不可调度时,目前运行在该节点上的POD不受影响,能够继续运行

当使用cordon设置以后查看node时,该节status后面会跟一个SchedulingDisabled的状态

如果我们想该节点上不调度任务POD,那么此时我们可以使用drain命令来驱逐

kubectl drain node_name --delete-local-data --ignore-daemonsets --force
–delete-local-data :即使pod使用了emptyDir也删除;
–ignore-daemonsets :忽略deamonset控制器的pod,如果不忽略,deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,会成为死循环
–force :不加force参数只会删除该NODE上由ReplicationController, ReplicaSet,DaemonSet,StatefulSet or Job创建的Pod,加了后还会删除’裸奔的pod’

节点删除的方法

kubectl delete node node_name

然后去该节点上执行

kubeadm reset

重新加入该节点的方法,在master上执行

kubeadm token create --print-join-command

上述命令会生成加入集群命令,然后去之前删除的节点执行下列命令

kubeadm join 192.168.90.220:6443 --token si8a8j.7ykocpr5nqsqmt7v     --discovery-token-ca-cert-hash sha256:1977d7ea82e2afe92573e8f6d35705470b6bba6a1b2a63ac25bef680a50ec121

最后检查下节点状态

kubectl get node -o wide


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/875.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。