你正在查看的文档所针对的是 Kubernetes 版本: v1.29
Kubernetes v1.29 版本的文档已不再维护。你现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。
Kubernetes 对象状态的指标
Kubernetes API 中 Kubernetes 对象的状态可以被公开为指标。
一个名为 kube-state-metrics
的插件代理可以连接到 Kubernetes API 服务器并公开一个 HTTP 端点,提供集群中各个对象的状态所生成的指标。
此代理公开了关于对象状态的各种信息,如标签和注解、启动和终止时间、对象当前所处的状态或阶段。
例如,针对运行在 Pod 中的容器会创建一个 kube_pod_container_info
指标。
其中包括容器的名称、所属的 Pod 的名称、Pod 所在的命名空间、
容器镜像的名称、镜像的 ID、容器规约中的镜像名称、运行中容器的 ID 和用作标签的 Pod ID。
有能力(例如通过 Prometheus)抓取 kube-state-metrics 端点的外部组件现在可用于实现以下使用场景。
示例:使用来自 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 网站指南了解更多细节。
在提交更改建议,向本页添加新的第三方链接之前,你应该先阅读内容指南。