如何删除挂起状态超过n小时的过期实例? [英] How to delete stale pods which are in Pending state for more than n hours?

查看:16
本文介绍了如何删除挂起状态超过n小时的过期实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下命令正常删除处于Pending状态的所有过期Pod:

kubectl get pod -n my-namespace | grep Pending | awk '{print $1}' | xargs kubectl delete pod -n my-namespace

但是,我想添加一个条件,只删除那些处于挂起状态超过N小时的Pod。有与get pods一起返回的AGE列,但其时间单位有所不同,我假设有更好的方法。

我的目标是定期运行此命令以清理挂起的Pod,如果任何人能提出任何有关此问题的最佳实践,我将不胜感激。

推荐答案

如果没有一些第三方工具的帮助,单独使用kubectl很难计算Pod在特定状态下花费了多少时间。不过,我有一个解决方案,您可能会觉得有用。

您可以列出Pending状态超过X天的所有Pod。例如,以下命令将列出超过5天的所有PendingPod:

kubectl get pods --field-selector=status.phase=Pending --sort-by=.metadata.creationTimestamp | awk 'match($5,/[6-9]d|[0-9][0-9]d|[0-9][0-9][0-9]d/) {print $0}'

然后您可以使用下一个命令删除这些Pod:

kubectl delete pod $(kubectl get pods --field-selector=status.phase=Pending --sort-by=.metadata.creationTimestamp | awk 'match($5,/[6-9]d|[0-9][0-9]d|[0-9][0-9][0-9]d/) {print $0}')

可以也应该通过修改awk脚本来调整该值,以便与您的用例匹配。

这篇关于如何删除挂起状态超过n小时的过期实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆