Kubernetes 物件狀態的度量

kube-state-metrics,一個用於生成和公開叢集級別指標的附加代理。

Kubernetes API 中的 Kubernetes 物件狀態可以作為指標公開。一個名為 kube-state-metrics 的附加代理可以連線到 Kubernetes API 伺服器,並公開一個 HTTP 端點,其中包含根據叢集中單個物件的狀態生成的指標。它公開了關於物件狀態的各種資訊,例如標籤和註解、啟動和終止時間、狀態或物件當前所處的階段。例如,在 Pod 中執行的容器會建立一個 `kube_pod_container_info` 指標。這包括容器的名稱、其所屬 Pod 的名稱、Pod 執行所在的名稱空間、容器映象的名稱、映象 ID、容器規約中的映象名稱、執行中容器的 ID 和 Pod 的 ID 作為標籤。

一個能夠抓取 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)