如何使用 kubectl 命令以秒为单位获取 argo 工作流年龄

How to get the argo workflow age in seconds using kubectl command

有没有办法使用 kubectl 命令以秒为单位获取特定的 argo 工作流年龄?

我有一个比较 argo 工作流程年龄的要求。如果工作流存在时间超过 24 小时,我需要终止工作流。

你应该使用 Argo Workflow's built-in, declarative timeout feature:

spec:
  activeDeadlineSeconds: 86400

如果超过 24 小时,工作流将失败。要实际删除工作流,请设置 TTL policy.

ttlStrategy:
  secondsAfterCompletion: 60

cost optimizations 文档还有一些其他注释,这些注释在设计清理策略时会有所帮助。

我永远无法抗拒好的 jq 挑战,所以这里有一个基于脚本的替代方案:

WORKFLOW_NAME=something

if kubectl get wf -n argo "$WORKFLOW_NAME" -ojson | jq --exit-status 'now - (.metadata.creationTimestamp | fromdateiso8601) > (24*60*60)'; then
  kubectl delete wf -n argo "$WORKFLOW_NAME"
fi