如何删除处于 Pending 状态超过 n 小时的陈旧 Pod?

时间:2021-02-17 15:43:45

标签: kubernetes kubectl

我正在使用以下命令正常删除任何处于 Pending 状态的陈旧 Pod:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您可以列出所有处于 Pending 状态并且超过 X 天的 Pod。例如,下面的命令将列出所有超过 5 天的 Pending 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}'

然后您可以使用下一个命令删除这些 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 脚本来调整该值以匹配您的用例。

相关问题