如何在kubernetes中筛选已完成的作业



我正试图根据作业的状态,使用golang-kubernetes客户端go-lib来过滤已完成的作业。

我检查了其他解释如何使用kubectl获得工作的答案,比如:

kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}'

但我不知道如何将jsonpath输出"转换"为过滤器或列表选项

如果我按吊舱的状态阶段和标签搜索吊舱,我会这样做:

listOptions := metav1.ListOptions{
LabelSelector: "app.kubernetes.io/name=my-custom-job",
FieldSelector: "status.phase=Running",
}
result, err := clientset.CoreV1().Pods("default").List(listOptions) 

但是如果我要实现jsonpath{.items[?(@.status.succeeded==1)].metadata.name}

这将遍历所有作业,并检查状态下的successed键是否等于1。适用于所有工作。

有没有一种方法可以寻找更"内存友好"的作业,或者在ListOptions中使用类似的jsonpath

,您可以在服务器端筛选出只完成的作业。

listOptions := metav1.ListOptions{
FieldSelector: "status.successful=1",
}
result, err := clientset.BatchV1().Jobs("").List(listOptions) 

作业规范中的status.successful字段正直接映射到metav1.ListOptions.FieldSelector中的status.successful字段。更多信息。

也就是说,服务器端的可用选项列表受到高度限制。不能使用规范中的任意字段进行筛选(例如status.active规范并行度(。Github对此有问题。

相关内容

  • 没有找到相关文章

最新更新