【问题标题】:Kubernetes events for pod termination or job completion用于 Pod 终止或作业完成的 Kubernetes 事件
【发布时间】:2020-07-19 15:29:36
【问题描述】:

我们的应用程序在 Kubernetes 上运行作业。 我们目前正在查询 kubernetes 以向用户提供有关作业状态的反馈,并且一旦作业完成,还希望向他们提供作业(pod)日志。这经常发生,例如每 30 秒。 我们现在有大量的工作,这个 pod 查询和处理信息需要太长时间。

很高兴获知 Kubernetes 事件:Pod 处于挂起状态、已调度、正在拉取、正在运行、成功/失败。不确定在我们的应用程序中获取这些事件的最佳方式是什么,但这里的主要问题是:

是否存在终止 pod(成功或失败)或作业完成的事件?

如果这不存在,是否有解决方法来了解 pod 或作业是否已终止(以便我们可以去获取 pod 日志)?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Kubectl get events 提供集群中发生的事件。高级场景可以查看kubewatch

    Kubewatch 是一个 Kubernetes 观察者,目前将通知发布到可用的协作中心/通知渠道。在您的 k8s 集群中运行它,您将通过 webhook 获得事件通知。

    另一种选择是在 preStop 中添加一个处理程序,它会在 pod/job 终止之前发送一个事件

    https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define-poststart-and-prestop-handlers

    【讨论】:

    • 谢谢。我知道这一点,但没有 pod 终止或作业完成事件。至少在我的 k8s (1.13) 版本中没有
    • 进一步调查后:Kubewatch(和 botkube)不适用于 kubernetes 事件。这就是我之前的假设。相反,他们看的是 kubernetes api。 Kubewatch 处于非活动状态,并且 Kubewatch 和 botkube 都不是真正可定制的。相反,我认为对于我们的用例,最好编写我们自己的手表(可能还有告密者)。 Python 示例如下:github.com/polyaxon/ocular/blob/master/oculargithub.com/kubernetes-client/python/blob/master/examples/…
    猜你喜欢
    • 2021-06-10
    • 2020-06-02
    • 2016-08-31
    • 2020-02-28
    • 2021-06-23
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多