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

kubernetes获取已完成作业的事件

王季萌
2023-03-14

我们在晚上安排的cron作业正确启动,但映像本身的运行时间比计划的晚得多。我们预计拉取映像或从集群请求资源时会出现问题。通常我可以在kubectl描述作业名称输出的事件部分中看到此类错误。在本节中,我可以看到诸如拉取映像创建容器等事件。但是作业完成后,不再显示任何事件。

是否可以查看已完成作业的这些事件?

或者有没有另一种方法来调查这样的问题?

共有1个答案

诸葛皓
2023-03-14

存储事件的问题不仅仅是cronjobs。默认情况下,Kubernetes中的事件仅存储1小时(kube-apiserver的event-ttl标志)。这意味着,如果您的cronjob是在两个小时前运行的,您将不会在“kubectl describe”中看到事件。

为了将事件保存为以后的调查,您需要将其导出到某个位置。例如,Google Kubernetes引擎将事件存储到Stackdriver中。对于香草Kubernetes,您可以使用event_exporter或Elasticsearch将事件存储在Prometheus中。这回答了你的问题吗?

 类似资料:
  • 我正在尝试使用golang-kubernetes客户端go-lib根据作业的状态筛选完成的作业。 我已经检查了其他答案,解释了如何使用kubectl获取作业,如下所示: 但我不知道如何将jsonpath输出“转化”为过滤器或列表选项 如果我按状态阶段和标签搜索pod,我会这样做: 但是,如果我要实现jsonpath 这将遍历所有作业,并检查状态下的succeeded键是否等于1。适用于所有工作。

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

  • 我们的应用程序在库伯内特斯上运行作业。我们目前正在查询kubernetes,向用户反馈作业的状态,一旦作业完成,还想向他们提供作业(pod)日志。这种情况经常发生,例如每30次。我们现在有如此多的作业,以至于这个pod查询和处理信息需要太长时间。 如果能被告知kubernetes事件就太好了:一个pod正在等待、计划、拉动、运行、成功/失败。不确定在我们的应用程序中获取这些事件的最佳方式是什么,但

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

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

  • 我在有以下规格的空气间隙环境中清除了rke: 节点: 主机类型/提供程序:VirtualBox(测试环境) cluster.yml文件: 复制的步骤: docker网络 问题是否与网络接口有关?如果是:我如何创建它?