替换node节点操作步骤
移除node
停止调度
kubectl cordon <节点名称>
驱逐pod
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
kubectl delete node <节点名称>
重新reset节点
到node节点上执行
kubeadm reset
去优化node服务器。。。
加入node
生成join命令
查看一下token
kubeadm token list
没有的话就要再重新生成下
kubeadm token create --print-join-command
到node节点执行
kubeadm join apiserver.cluster.local:6443 --token p6sxoz.h1izgkfmxpnbgfz9 --discovery-token-ca-cert-hash sha256:3cc46f16728c774c8381ad5bdd771b00977d023bf29328bab509ac5fb8d0dba1
成功截图
问题
PodDisruptionBudget导致的驱逐失败
Cannot evict pod as it would violate the pod's disruption budget
解决:
查看所有的PodDisruptionBudget
kubectl get poddisruptionbudget -A
如果业务很重要的话,就要具体问题具体分析了。
可以增加副本数,在其他机器上多拉起来几个副本。
也可以修改poddisruptionbudget的配置,是不是不合理。
暴力的话,就直接删除了pdb
kubectl -n xxx delete poddisruptionbudget xxxx
本文使用 markdown.com.cn 排版