k8s替换node节点操作步骤

150 阅读1分钟

替换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

成功截图

image-20240111164345256.png

问题

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 排版