hello云胜

技术与生活

0%

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

成功截图

image-20240111164345256

问题

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