登录
首页 >  Golang >  Go问答

筛选已完成作业的方法在 Kubernetes 中

来源:stackoverflow

时间:2024-02-22 22:36:24 259浏览 收藏

本篇文章向大家介绍《筛选已完成作业的方法在 Kubernetes 中》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我正在尝试按状态过滤使用 golang kubernetes client-go lib 完成的作业。

我检查了其他答案,解释了如何使用 kubectl 获取工作,如下所示:

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

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

如果我按 pod 的状态阶段和标签搜索 pod,我会执行以下操作:

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}

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

有没有办法寻找那些更“内存友好”的作业,或者像listoptions中那样使用jsonpaths?


解决方案


,您可以在服务器端仅过滤掉已完成的作业。

listOptions := metav1.ListOptions{
    FieldSelector: "status.successful=1",
}
result, err := clientset.BatchV1().Jobs("").List(listOptions) 
作业规范中的

status.successful 字段直接映射到 metav1.listoptions.fieldselector 中的 status.succeeded 字段。 More info about that.

话虽如此,服务器端过滤的可用选项列表受到严格限制。您不能使用规范中的任意字段进行过滤(例如status.activespec.parallelism)。 Github Issue on that.

本篇关于《筛选已完成作业的方法在 Kubernetes 中》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>