我正在使用以下命令正常删除任何处于 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。
答案 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
脚本来调整该值以匹配您的用例。