kubectl 命令检查 cronjob 是否处于活动状态

Kubectl command to check if cronjob is active or not

我正在尝试通过 shell 脚本检查特定的 cronjob 是否处于活动状态,以便在作业不活动时执行某些操作。我尝试使用 cronjob 的字段选择器属性和 cron 作业创建的作业,如下所示

kubectl get cronjobs --field-selector status.active==1
kubectl get jobs --field-selector status.succeeded==1

但是不支持获取这些字段选择器。还有其他 field/way 我可以检查 cronjob 是否处于活动状态的地方吗?

您还可以在您的 cronjob 上设置一个标签(并在 cronjob 的 template 部分设置相同的标签,以便它传播到创建的基础作业),然后将其用于 select 通过:

kubectl get cronjob -l label=value

kubectl get job -l label=value

是的,select active/disabled 状态,但您在问题中确实提到您正在检查特定的 cronjob,因此这会显示特定 cronjob 的详细信息或工作给你检查

要获取 cronjob 的实际挂起状态,您可以将其通过管道传输到 jq

kubectl get cronjob cronjob-name | jq .items[0].spec.suspend

如果 cronjob 是否暂停,这将为您提供“false”或“true”:

$ kubectl get cronjob -n test
NAME      SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
api       */5 * * * *   False     0        78s             5m53s
$ kubectl get cronjob -n test api -o json | jq .spec.suspend
false

你也可以用 jsonpath

kubectl get cronjob -n test api -o jsonpath="{.spec.suspend}"

在下面的评论中,您可以使用 can active(即当前 运行),查看有多少作业处于活动状态(如果您没有任何作业,则为 0 运行 )

kubectl get cronjob -n test api -o jsonpath="{.spec.active}"