本文已发布一年以上。较旧的文章可能包含过时的内容。请检查页面上的信息自发布以来是否已变得不正确。

kube-state-metrics 进入 v2.0

是什么?

kube-state-metrics,一个 Kubernetes 组织下的项目,根据 Kubernetes 原生资源的当前状态生成 Prometheus 格式的指标。它通过监听 Kubernetes API 并收集有关资源和对象的信息(例如 Deployment、Pod、Service 和 StatefulSet)来实现。kube-state-metrics 的文档中提供了完整的资源列表。

为什么?

kube-state-metrics 提供了许多开箱即用的有用指标和见解!这些指标可以用作深入了解您的集群:无论是单独通过指标、仪表板形式还是通过警报管道。提供一些例子:

  • kube_pod_container_status_restarts_total 可用于警报崩溃的 Pod。
  • kube_deployment_status_replicaskube_deployment_status_replicas_available 一起使用,可用于警报部署是否成功推出或卡住。
  • kube_pod_container_resource_requestskube_pod_container_resource_limits 可用于容量规划仪表板。

还有更多可用的指标!要了解有关其他指标及其详细信息的更多信息,请查看文档

v2.0 中的新功能?

现在我们已经了解了 kube-state-metrics 是什么,我们很高兴地宣布下一个版本:kube-state-metrics v2.0!这个版本期待已久,并于 2020 年 9 月以 alpha 版本开始。为了方便维护,我们删除了技术债务,并调整了一些围绕面向用户的标志和 API 的令人困惑的措辞。我们还删除了一些在 Prometheus 中导致不必要的高基数的指标!对于 2.0 版本,我们花时间设置了规模和性能测试。这使我们能够更好地了解我们在大型集群中是否遇到任何问题,并记录集群的资源请求建议。在此版本(和 v1.9.8)中,引入了对多种架构提供支持的容器构建,使您也可以在 ARM、ARM64、PPC64 和 S390x 上运行 kube-state-metrics!

事不宜迟,以下是更多值得注意的面向用户的重大更改列表。完整的更改、功能和错误修复列表可在本文末尾的更改日志中找到。

  • 标志 --namespace 已重命名为 --namespaces。如果您使用的是前者,请确保在部署最新版本之前更新标志。
  • 标志 --collectors 已重命名为 --resources
  • 标志 --metric-blacklist--metric-whitelist 已重命名为 --metric-denylist--metric-allowlist
  • 标志 --metric-labels-allowlist 允许您指定一个 Kubernetes 标签列表,这些标签将转换为 kube_<资源名称>_labels 指标的维度。默认情况下,该指标仅包含名称和命名空间标签。
  • 所有前缀为 kube_hpa_* 的指标已重命名为 kube_horizontalpodautoscaler_*
  • 与 Kubernetes 相关的指标标签已转换为 snake_case。
  • 如果您将 kube-state-metrics 作为库导入,我们已将 go 模块路径更新为 k8s.io/kube-state-metrics/v2
  • 根据 v1.9 版本中的通知,所有已弃用的稳定指标均已删除。
  • quay.io/coreos/kube-state-metrics 镜像将不再更新。k8s.gcr.io/kube-state-metrics/kube-state-metrics 是新的规范位置(更新:k8s.gcr.io 已弃用,改用 registry.k8s.io)。
  • kubernetes/kube-state-metrics 存储库中的 helm 图表已弃用。https://github.com/prometheus-community/helm-charts 将是其新位置。

有关 v2.0 版本更改的完整列表,包括功能、错误修复和其他重大更改,请参阅完整的 CHANGELOG

发现问题?

感谢所有用户到目前为止的测试,并感谢所有贡献者提出的问题报告以及代码和文档更改!如果您发现任何问题,我们维护人员非常乐意调查,因此请通过打开 GitHub 问题来报告它们。