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)