K8s集群删除节点后,如何移除遗留的DaemonSet Pod?
如何移除已删除节点上残留的DaemonSet Pod
我来帮你搞定这个残留Pod的问题~ 你遇到的情况很常见:因为执行kubectl drain时加了--ignore-daemonsets,所以kube-proxy和Weave这类DaemonSet管理的Pod会被跳过驱逐;而当节点被删除后,K8s没办法和离线节点通信来正常终止这些Pod,所以它们就留在集群里了。
下面是具体的解决步骤:
1. 定位残留的Pod
首先先确认哪些Pod是属于已删除的worker1节点的,执行以下命令:
kubectl get pods -n kube-system -o wide | grep worker1
你会看到类似这样的输出,里面就是需要清理的kube-proxy和Weave Pod:
kube-proxy-xxxxxx 1/1 Unknown 0 3d2h <none> worker1 <none> <none> weave-net-yyyyyy 2/2 Unknown 0 3d2h <none> worker1 <none> <none>
2. 强制删除残留Pod
因为节点已经不存在了,没法正常优雅终止这些Pod,所以需要用强制删除的方式:
# 替换成你实际的kube-proxy Pod名称 kubectl delete pod kube-proxy-xxxxxx -n kube-system --force --grace-period=0 # 替换成你实际的Weave Pod名称 kubectl delete pod weave-net-yyyyyy -n kube-system --force --grace-period=0
--force:告诉K8s强制删除这个Pod,忽略正常的终止流程--grace-period=0:跳过优雅等待时间,直接清理Pod的集群记录
执行完之后,再用第一步的命令检查一下,这些残留的Pod就应该消失了。
额外说明
DaemonSet本身会根据集群中的节点状态来调度Pod,既然worker1已经被彻底删除,DaemonSet不会再往这个不存在的节点上创建新Pod,所以你不用担心后续会再出现类似的残留问题。
内容的提问来源于stack exchange,提问作者sam ngai
相关产品推荐
相关产品推荐

