如何跟踪 Kubernetes HPA 的更改数量?

How to track number of changes for Kubernetes HPA?

关于Kubernetes Horizontal Autoscaler,是否有任何与特定时间段之间的变化数量相关的指标?

Kubernetes 不提供此类指标,但您可以获得 events 的 k8s 资源。

An event in Kubernetes is an object in the framework that is automatically generated in response to changes with other resources—like nodes, pods, or containers.

获取 HPA 事件的最简单方法:

$ kubectl get events | grep HorizontalPodAutoscaler
7m5s        Normal    SuccessfulRescale              HorizontalPodAutoscaler   New size: 8; reason: cpu resource utilization (percentage of request) above target
3m20s       Normal    SuccessfulRescale              HorizontalPodAutoscaler   New size: 10; reason:

$ kubectl describe hpa <yourHpaName>

但是 Kubernetes 事件默认情况下会在 1 小时后删除(这是默认值 time-to-live,更高的值可能需要更多资源 etcd)。因此,您必须在重要事件发生时关注并收集它们

为此,您可以使用例如:

  • KubeWatch 是很棒的 open-source 工具,用于观看 K8s 事件并将其流式传输到 third-party 工具和 webhooks。
  • EventRouter 是另一个很棒的 open-source 工具,用于收集 Kubernetes 事件。设置和旨在将 Kubernetes 事件流式传输到多个源或 sinks 是毫不费力的,因为它们在其文档中被引用。但是,就像 KubeWatch 一样,它也不提供查询或持久化功能。您需要将其与 third-party 存储和分析工具连接以获得 full-fledged 体验。
  • 几乎所有 k8s 的日志记录工具。

还有,您可以使用official Kubernetes API library开发一些简单的应用程序来从 HPA 捕获事件。 有一个很好的例子说明如何自己开发一个简单的k8s监控应用程序in this answer。他们在那里监视 pods' 状态,但您可以很好地了解开发所需的应用程序。