首先
2、k8s命令(pod相关(驱逐、强制删除)、让Master当Node用、修改nodeport端口范围、修改k8sDNS、运行nslookup容器)_kubectl drain-CSDN博客
kubectl drain 在节点上删除所有 Pod,同时将该节点标记为不可调度状态,以便对该节点进行维护或者停机等操作。
使用 kubectl drain 命令前,请确保您已经了解所要执行的操作,并且已经有其他可用节点可以接替原来的工作负载。下面是使用 kubectl drain 的基本步骤:
1 -确认需要删除 Pod 的节点名称:您可以通过 kubectl get nodes 查看所有节点的状态和名称。
kubectl get nodes
1、kubectl drain可以让node在维护期间排除节点。drain本意排水,意思是将出问题的node下的pod转移到其它node下运行。
kubectl drain nodename --delete-local-data --ignore-daemonsets --force
执行成功后会出现;evicted 中文意思是被驱逐
2、将node置为SchedulingDisabled不可调度状态
kubectl cordon nodename
将node置为SchedulingDisabled不可调度状态,后续的新创建pod容器时scheduler调度不会考虑该node,旧的pod容器不会受影响,仍可以对外提供正常服务。(特殊情况:pod容器如果跟node绑定的话,容器下次更新就不会回到原宿主机,该情况如何处理呢?可能设置成不可调度状态就不太合适。调度器 预调度策略)
3-恢复调度
kubectl uncordon nodename
cordon 是警戒线的意思
Terminating可使用kubectl中的强制删除命令
验证 Pod 已被删除:使用 kubectl get pods --all-namespaces 命令确认指定节点上的所有 Pod 已经被成功删除。
维护/更新该节点:在完成维护或更新操作后,取消该节点的不可调度状态并恢复其工作负载。您可以使用以下命令取消不可调度状态并重新启动 kubelet 服务:kubectl uncordon node-1 && systemctl restart kubelet.service
请注意,如果在执行 kubectl drain 操作时未指定任何选项,则默认情况下会等待 Pod 完成清理后再退出。此外,在某些情况下,可能需要添加一些其他选项,例如 --ignore-daemonsets=true (忽略 DaemonSet 中运行的守护程序 Pod)或 --force=true (强制删除 Pod)。
欢迎来撩 : 汇总all