2

我有几个 CronJobs,我希望能够查询特定作​​业的已完成作业列表。我试过--field-selector metadata.ownerReferences.uid了,但这不是 batchv1.job 支持的字段选择器(看起来这个用例似乎没有有用的字段选择器)。

我不完全理解 DownwardAPI,但我想知道是否可以在引用 cronjobs uid 的 job_spec(在 cronjob 定义中)上设置标签,以便我可以使用标签选择器进行过滤。我不知道那是否可能。

按所有者过滤工作似乎是一件合理的事情,但在四处搜索时我似乎找不到任何有用的信息。

4

1 回答 1

1

您可以使用这两个命令来获取属于 Cronjob 的作业列表:

uid=$(kubectl get cronjob [MY-CRONJOB-NAME] --output jsonpath='{.metadata.uid}')
kubectl get jobs -o json | jq -r --arg uid "$uid" '.items | map(select(.metadata.ownerReferences[]? | .uid==$uid) | .metadata.name) | .[]'

第一个命令metadata.uid从您指定的[MY-CRONJOB-NAME]. 然后,akubectl get所有作业,并使用jq处理输出以通过.metadata.ownerReferences.uid.


如果你想要一个更简单的方法,你可以玩--custom-columns 国旗。以下示例列出了所有作业及其各自的控制器名称:

kubectl get jobs --all-namespaces -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].name,NAMESPACE:.metadata.namespace
于 2019-10-25T16:01:05.430 回答