Kubernetes 对象状态的度量
kube-state-metrics,一个用于生成和公开集群级别指标的附加代理。
Kubernetes API 中的 Kubernetes 对象状态可以作为指标公开。一个名为 kube-state-metrics 的附加代理可以连接到 Kubernetes API 服务器,并公开一个 HTTP 端点,其中包含根据集群中单个对象的状态生成的指标。它公开了关于对象状态的各种信息,例如标签和注解、启动和终止时间、状态或对象当前所处的阶段。例如,在 Pod 中运行的容器会创建一个 `kube_pod_container_info` 指标。这包括容器的名称、其所属 Pod 的名称、Pod 运行所在的命名空间、容器镜像的名称、镜像 ID、容器规约中的镜像名称、运行中容器的 ID 和 Pod 的 ID 作为标签。
🛇 此项链接到不属于 Kubernetes 本身第三方项目或产品。更多信息
一个能够抓取 kube-state-metrics 端点的外部组件(例如通过 Prometheus)现在可以用于实现以下用例。
示例:使用 kube-state-metrics 中的指标查询集群状态
kube-state-metrics 生成的指标系列有助于深入了解集群,因为它们可以用于查询。
如果您使用 Prometheus 或其他使用相同查询语言的工具,以下 PromQL 查询将返回未就绪的 Pod 数量:
count(kube_pod_status_ready{condition="false"}) by (namespace, pod)
示例:基于 kube-state-metrics 的告警
kube-state-metrics 生成的指标也允许对集群中的问题进行告警。
如果您使用 Prometheus 或其他使用相同告警规则语言的类似工具,如果 Pod 处于 `Terminating` 状态超过 5 分钟,则会触发以下告警:
groups:
- name: Pod state
rules:
- alert: PodsBlockedInTerminatingState
expr: count(kube_pod_deletion_timestamp) by (namespace, pod) * count(kube_pod_status_reason{reason="NodeLost"} == 0) by (namespace, pod) > 0
for: 5m
labels:
severity: page
annotations:
summary: Pod {{$labels.namespace}}/{{$labels.pod}} blocked in Terminating state.
本页上的项目提及了提供 Kubernetes 所需功能的第三方产品或项目。Kubernetes 项目作者对这些第三方产品或项目不承担任何责任。有关更多详细信息,请参阅 CNCF 网站指南。
在提议添加额外第三方链接的更改之前,你应该阅读内容指南。
最后修改时间:2024 年 3 月 11 日太平洋标准时间晚上 10:46:添加 kube-state-metrics 部分 (c1e7578efb)