当前位置: 首页 > 知识库问答 >
问题:

如何在 kubernetes 中过滤已完成的作业

郏经纬
2023-03-14

我正在尝试使用golang-kubernetes客户端go-lib根据作业的状态筛选完成的作业。

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

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

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

如果我按状态阶段和标签搜索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{。项目[?( @. status.succeeded==1)]。metadata.name}

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

有没有一种方法来寻找那些更“内存友好”的作业,或者在ListOptions中使用类似jsonpaths的方法?

共有1个答案

孔皓
2023-03-14

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

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

地位作业规范中的成功字段直接映射到状态。metav1.ListOptions.FieldSelector中的successed字段。更多信息。

话虽如此,在服务器端过滤的可用选项列表受到高度限制。您不能使用规范中的任意字段进行过滤(例如 status.active 或 spec.parallelism)。Github问题。

 类似资料:
  • 我正在运行一个Kubernetes的工作,并试图在它完成几个小时后查看它的日志。但是,当我执行时,没有列出pod(返回时只是),而当我执行时,该作业的pod不在那里。如何在已完成的作业中配置删除pod的操作,以及如何更改该操作以使pod保持更长的时间以便读取其日志?

  • 我无法自动删除由CronJob启动的已完成作业。正如我在此处和此处的QA中以及在官方文档中所阅读的,这可以通过建立作业历史限制< code > . spec . successfuljobshistorylimit 和< code > . spec . failed jobshistorylimit 来完成。我做过,两种情况下都成立为1。但是我的群集保存了不止一个已完成的作业,事实上,它保存的数据

  • 我们在晚上安排的cron作业正确启动,但映像本身的运行时间比计划的晚得多。我们预计拉取映像或从集群请求资源时会出现问题。通常我可以在输出的事件部分中看到此类错误。在本节中,我可以看到诸如等事件。但是作业完成后,不再显示任何事件。 是否可以查看已完成作业的这些事件? 或者有没有另一种方法来调查这样的问题?

  • 有没有一种方法,自动删除已完成的作业除了使一个Cron作业清理已完成的作业? K8s 作业文档指出,已完成作业的预期行为是让它们保持已完成状态,直到手动删除。因为我每天通过 CronJobs 运行数千个作业,我不想保留已完成的作业。

  • 我有一个舞台,一个场景和一个WebView节点。当我将窗口扩展到更大的尺寸时--由于WebView,事情变得相当缓慢。我想要做的是,只有当窗口的大小调整完成时才填充WebView的新空间(这是我在窗口的可调整大小的控件/边缘上释放鼠标左键)。现在我可以设置最大值。此节点的大小为默认情况下的大小-这将阻止它的扩展。但是如何检测窗口上已完成的调整大小操作的实际事件呢?使用绑定,我可以验证大小调整是否发

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在