我在 Google Container Engine 集群中使用 Kubernetes,我可以在 Stackdriver 日志中看到其中一个 Pod 由于 OutOfMemory 异常而倒下并自动重新启动。
是否有任何标准方法来监控这些事件?
我正在使用Heapster,它似乎没有提供任何关于 Pod 关闭和重启的指标。
我在 Google Container Engine 集群中使用 Kubernetes,我可以在 Stackdriver 日志中看到其中一个 Pod 由于 OutOfMemory 异常而倒下并自动重新启动。
是否有任何标准方法来监控这些事件?
我正在使用Heapster,它似乎没有提供任何关于 Pod 关闭和重启的指标。
根据我们的 IT 系统管理员的说法,目前大多数用于实时监控和警告 Pod 故障的解决方案目前都不稳定或非常乏味。
我们最终开发了一个小脚本,它使用 Slack.com 网络服务进行邮件通知等。
如果我的答案不是现成的一键式解决方案,我很抱歉:-)
这是我们当前经验和搜索的真实反馈。
我希望在不久的将来,关于该主题的事情会迅速发展!
我们的代码(有效结果的简单解决方案):
有一个工具叫做kube-state-metrics
(1),它提供了关于 k8s 对象的指标,包括容器的重启次数 (2)。Prometheus (3) 可以使用这些指标,如果重启计数高于指定数量,您可以在其中创建警报。
如果您决定采用这种方式,CoreOS 的 Prometheus Operator (4) 及其示例配置 (5) 可能会很有用,当我们最近将它部署到我们的集群时它非常有用。在该示例中,没有预定义的重启计数警报,但添加一个应该很容易。
(1) https://github.com/kubernetes/kube-state-metrics
(2) https://github.com/kubernetes/kube-state-metrics/blob/master/Documentation/pod-metrics.md
(3 ) https://prometheus.io/
(4) https://coreos.com/operators/prometheus/docs/latest/user-guides/getting-started.html
(5) https://github.com/coreos/ prometheus-operator/tree/master/contrib/kube-prometheus
您还可以使用 kubernetes 事件导出器来捕获 pod 故障的关键事件,例如 BackOff、Failed、Failed Scheduling、OOMKilled 等。它很容易设置。这是我博客上的设置指南。