k8s 漂移pod
背景:当前业务中需要将旧的node替换为新的node。需要将旧的node上的pod 迁移到新的node上。
也就是对node节点进行维护,驱逐pod
设置node1 不能调度
kubectl cordon node1
驱逐node1节点上的Pod
kubectl drain node1 --delete-local-data --ignore-daemonsets --force
--delete-local-data 删除本地数据,即使emptyDir也将删除;
--ignore-daemonsets 忽略DeamonSet,否则DeamonSet被删除后,仍会自动重建;
--force 不加force参数只会删除该Node节点上的ReplicationController,ReplicaSet,DaemonSet,StatefulSet or Job,加上后所有Pod都将删除。
如果要恢复node1
kubectl uncordon node1
在驱逐node1节点上的pod时遇见一个问题
原来是 PDB(pod's disruption budget)的特性,主动清理 Pod 时(例如 drain)对可用数量的保护,防止影响业务。
通过 describe 命令可以看到 istio-galley 至少要有一个 Pod,所以我们无法驱逐
解决办法就是扩容。
kubectl scale --replicas=2 deploy/istio-ingressgateway -n istio-system