【问题标题】:Kubernetes liveness probe: webhook notification on failureKubernetes liveness probe:失败时的 webhook 通知
【发布时间】:2020-03-01 15:56:06
【问题描述】:

我在 Google 云上运行 Kubernetes 集群。我的集群有一个暴露健康检查接口(通过 HTTP)的部署。在我的部署yaml 文件中,我配置了:

livenessProbe:
  # an http probe
  httpGet:
    path: /hc
    port: 80
    scheme: HTTP
  initialDelaySeconds: 30
  timeoutSeconds: 60
  periodSeconds: 90

如果我的健康检查端点返回 200 以外的任何值,则 pod 将被杀死并重新启动。

目前,在 pod 重新启动后,它只是将其计入“重新启动”计数器,但不会通知任何人。我想通知系统管理员此事件已发生。我想用 webhook 通知。

这可能吗?如果不是,我的其他通知替代方案是什么?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    对此有些复杂的标准答案是 Kubernetes -> kube-state-metrics -> Prometheus -> alertmanager -> webhook。对于一项简单的任务来说,这听起来可能很多,但 Prometheus 及其相关工具在指标和警报方面的使用更为广泛。如果您想要一个更狭窄的答案,您可以查看 Brigade 吗?但可能只是使用 kube-prometheus(它是一个带有一堆相关组件的 Prom,都为你设置好了)。

    【讨论】:

    • 嘿,我不清楚答案。我在哪里可以找到您指定的webhook (Kubernetes -> kube-state-metrics -> Prometheus -> alertmanager -> webhook)? Brigade 是什么?我是否需要 3rd 方组件来存档此目标?
    • 是的,Prometheus 是一个第三方工具(虽然也在 CNCF 的保护伞下,所以它是一个兄弟项目)。 Alertmanager 是真正会触发 webhook 的东西,它是 Prometheus 中处理发送警报的组件。
    【解决方案2】:

    您可以将preStop hook 添加到您的 pod 规范中。该钩子可以在 pod 关闭之前运行脚本或进行 HTTP 调用。您可以配置挂钩以调用触发通知的 API。

    【讨论】:

    • 有趣。我可以在这里看到两个问题:1)preStop 没有说明停止的原因,我想区分正常停止和健康检查探测失败。 2)钩子实际上是在容器上运行脚本。如果由于连接而导致运行状况检查探测失败 - 挂钩将永远不会发送。
    • 如果容器完全没有响应,你是对的,它不会发送任何东西。另一种选择是日志记录和监控的组合,根据您的首选日志记录/监控代理发送警报,如寻呼机职责或数据狗
    • 我正在使用带有接收器的 Stackdrive 日志记录来记录通知。但是,如果没有连接,消息将不会到达 Google 的日志服务器(我在 2 周前遇到过这种情况)
    • 这取决于你在寻找什么。您可能会从 kubelet 或节点中找到所需的日志。如果容器发生故障,则有多个地方可以收集日志。使用stackdriver,查看kubelet或docker日志
    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多