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 PST:新增關於 kube-state-metrics 的章節 (c1e7578efb)