替换node节点操作
移除node
停止调度
1 | kubectl cordon <节点名称> |
驱逐pod
1 | kubectl drain --force --ignore-daemonsets --delete-local-data <节点名称> |
–force
当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候
就需要用–force来强制执行 (例如:kube-proxy)
–ignore-daemonsets
忽略DaemonSet管理下的Pod
–delete-local-data
如果有mount local volumn的pod,会强制杀掉该pod并把料清除掉
另外如果跟本身的配置讯息有冲突时,drain就不会执行
删除node
1 | kubectl delete node <节点名称> |
重新reset节点
到node节点上执行
1 | kubeadm reset |
去优化node服务器。。。
加入node
生成join命令
查看一下token
1 | kubeadm token list |
没有的话就要再重新生成下
1 | kubeadm token create --print-join-command |
到node节点执行
1 | kubeadm join apiserver.cluster.local:6443 --token p6sxoz.h1izgkfmxpnbgfz9 --discovery-token-ca-cert-hash sha256:3cc46f16728c774c8381ad5bdd771b00977d023bf29328bab509ac5fb8d0dba1 |
成功截图

问题
PodDisruptionBudget导致的驱逐失败
1 | Cannot evict pod as it would violate the pod's disruption budget |
解决:
查看所有的PodDisruptionBudget
1 | kubectl get poddisruptionbudget -A |
如果业务很重要的话,就要具体问题具体分析了。
可以增加副本数,在其他机器上多拉起来几个副本。
也可以修改poddisruptionbudget的配置,是不是不合理。
暴力的话,就直接删除了pdb
1 | kubectl -n xxx delete poddisruptionbudget xxxx |