本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
kube-state-metrics 升级到 v2.0
什么是 kube-state-metrics?
kube-state-metrics 是 Kubernetes 组织下的一个项目,它根据 Kubernetes 原生资源的当前状态生成 Prometheus 格式的度量指标。它通过监听 Kubernetes API 并收集有关资源和对象(例如 Deployment、Pod、Service 和 StatefulSet)的信息来实现这一点。完整资源列表可在 kube-state-metrics 的文档中找到。
为什么要用 kube-state-metrics?
kube-state-metrics
开箱即用地提供了许多有用的度量指标和洞察!这些度量指标可以作为您集群的洞察:可以通过单独的度量指标、仪表板形式或通过警报管道来实现。举几个例子:
kube_pod_container_status_restarts_total
可用于警报崩溃的 Pod。kube_deployment_status_replicas
与kube_deployment_status_replicas_available
结合使用,可用于警报 Deployment 是否成功发布或卡住。kube_pod_container_resource_requests
和kube_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_<resource-name>_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 Chart 已弃用。https://github.com/prometheus-community/helm-charts 将是它的新位置。
有关 v2.0 版本更改的完整列表,包括功能、错误修复和其他重大更改,请参阅完整的变更日志。
发现问题?
感谢所有用户迄今为止的测试,感谢所有贡献者的问题报告以及代码和文档更改!如果您发现任何问题,我们这些维护者非常乐意调查,因此请通过创建 GitHub 问题来报告它们。