kubernetes 批量删除失败pod

部署运行你感兴趣的模型镜像

查看dashboard发现很多pod状态是Evicted状态,需要批量删除这些失败了的pod。

方案:

kubectl  get pods | grep Evicted | awk '{print$1}'| xargs kubectl delete pods

kubectl  get pods -n kube-system | grep Evicted | awk '{print$1}'| xargs kubectl delete -n kube-system pods

第一条命令用于删除default namespace下的失败pod,第二条用户删除指定namespace下的失败pod(此处是以kube-system为例)。

解析:

kubectl  get pods

获取所有的pods及其状态。

| grep Evicted

通过 “|” pipe上一步出参当作下一个操作的入参;

执行grep,选出带有Evicted字段的pod。

| awk '{print$1}'

通过awk,获取第一列信息,也就是NAME,这一步返回的是一个失败pod名称的列表。

| xargs kubectl delete pods

使用xargs指令,循环删除失败pod。

 

xargs说明

somecommand |xargs command
-a file 从文件中读入作为sdtin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

somecommand会输出一段内容,xargs针对输出,配合参数,会做相应处理,如果没有参数,默认每次用一行数据当作command的参数,例如kubectl get pod | grep Evicted返回的是

。。。。。。。
。。。。。。
。。。。。。。
。。。。。。。。
。。。。。

这样的数据,每一行就是一个pod名称,不加任何参数,就是command  arg1 arg2 ...达到批量删除的目的,前提是命令支持这种形式:kubectl delete pods pod1 pod2 pod3 ... podn 

总结:

也可以通过修改Evicted,来选取其它类型的pod删除。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>好的,我需要帮助用户删除处于Terminated状态的Kubernetes Pod。根据用户的问题,首先我需要回顾一下之前提供的引用内容,看看有没有相关的解决方案。 首先,引用[1]提到可以使用`kubectl delete pods`命令加上`--grace-period=0`和`--force`参数来强制删除Pod,特别是当Pod卡在终止或未知状态时。引用[3]也提到类似的方法,但提醒用户谨慎使用强制删除,尤其是对于StatefulSet管理的Pod,可能会导致数据问题。此外,引用[3]还提到如果节点失联,可以删除Node或者等待节点恢复,让kubelet自行处理。引用[4]则解释了Terminating状态的含义,说明Pod正在被优雅终止,可能需要等待清理过程完成。 接下来,我需要整理这些信息,形成步骤清晰的解决方案。首先推荐常规方法,比如检查自动清理或手动删除命令。如果常规方法无效,再建议强制删除,并提醒注意事项。同时,要提到处理节点问题的情况,比如删除不可达的节点或等待节点恢复。 还需要注意用户可能遇到的权限问题,比如是否有执行这些命令的权限。另外,要强调强制删除的风险,特别是对有状态应用的影响,确保用户了解潜在问题。 最后,生成相关问题,帮助用户进一步了解Pod管理,比如如何查看Pod状态、处理卡在Terminating的Pod,以及节点故障时的处理方法。</think>要删除处于Terminated状态的Kubernetes Pod,可以通过以下步骤操作: ### 常规删除方法 1. **基础删除命令** 使用`kubectl delete`指定Pod名称或YAML文件: ```bash kubectl delete pod <pod-name> # 或通过YAML文件 kubectl delete -f <pod-config.yaml> ``` 若Pod处于正常终止流程中,系统会在默认30秒宽限期(grace period)后自动清理[^4]。 2. **查看Terminated Pod** 通过筛选状态快速定位目标Pod: ```bash kubectl get pods --field-selector=status.phase==Succeeded # 查看已完成的Pod kubectl get pods | grep -E 'Terminated|Completed' # 筛选终止/完成状态的Pod ``` ### 强制删除方法(慎用) 当Pod卡在`Terminating`状态无法自动清理时: ```bash kubectl delete pod <pod-name> --grace-period=0 --force ``` - `--grace-period=0`:跳过优雅终止等待时间 - `--force`:强制执行删除操作 **注意**:可能触发`warning: Immediate deletion does not wait for confirmation that the running resource has been terminated`警告,但实际删除操作仍会执行[^1][^3] ### 特殊情况处理 1. **节点失联时的处理** 若Pod所在节点处于`NotReady`状态: ```bash # 先驱逐节点上的Pod kubectl drain <node-name> --delete-local-data --ignore-daemonsets # 再删除节点本身 kubectl delete node <node-name> ``` 节点恢复后,kubelet会自动完成残留Pod的清理[^3] 2. **批量清理Terminated Pod** 通过组合命令清理所有终止状态的Pod: ```bash kubectl get pods | grep "Terminated" | awk '{print $1}' | xargs kubectl delete pod ``` ### 注意事项 1. StatefulSet管理的Pod强制删除可能导致数据不一致或脑裂问题[^3] 2. 强制删除不会等待存储卷卸载等清理操作完成 3. 优先排查Pod卡住的原因(如Finalizer阻塞、存储卷卸载失败等) ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值