監控啟動延遲指標

本頁面說明可用於監控 Google Kubernetes Engine (GKE) 工作負載和基礎叢集節點啟動延遲時間的指標和資訊主頁。您可以使用這些指標追蹤、排解及縮短啟動延遲時間。

本頁面適用於需要監控及最佳化工作負載啟動延遲時間的平台管理員和操作員。如要進一步瞭解 Google Cloud 內容中提及的常見角色,請參閱「常見的 GKE 使用者角色和工作」。

總覽

啟動延遲時間會大幅影響應用程式對流量高峰的回應方式、副本從中斷復原的速度,以及叢集和工作負載的營運成本效率。監控工作負載的啟動延遲時間,有助於偵測延遲時間是否變長,並追蹤工作負載和基礎架構更新對啟動延遲時間的影響。

最佳化工作負載啟動延遲具有下列優點:

  • 在流量高峰期間,縮短服務對使用者的回應延遲時間。
  • 減少建立新副本時,為因應需求激增而需預留的額外服務容量。
  • 減少已部署資源的閒置時間,這些資源在批次運算期間會等待其餘資源啟動。

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
  • 啟用 Cloud Logging 和 Cloud Monitoring API。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

需求條件

如要查看工作負載啟動延遲時間的指標和資訊主頁,GKE 叢集必須符合下列需求條件:

  • 您必須使用 GKE 1.31.1-gke.1678000 以上版本。
  • 您必須設定系統指標收集功能。
  • 您必須設定系統記錄的收集作業。
  • 在叢集上啟用 POD 元件的 kube 狀態指標,即可查看 Pod 和容器指標。

必要角色和權限

如要取得啟用記錄檔生成功能,以及存取和處理記錄檔所需的權限,請要求管理員授予您下列 IAM 角色:

  • 查看 GKE 叢集、節點和工作負載:專案的 Kubernetes Engine 檢視者 (roles/container.viewer)
  • 存取啟動延遲時間指標並查看資訊主頁:專案的 Monitoring 檢視者 (roles/monitoring.viewer)
  • 存取含有延遲時間資訊的記錄,例如 Kubelet 映像檔提取事件,並在記錄檔探索工具和 Observability Analytics 查看:專案的記錄檢視者 (roles/logging.viewer)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

啟動延遲時間指標

啟動延遲時間指標包含在 GKE 系統指標中,並匯出至與 GKE 叢集位於相同專案的 Cloud Monitoring。

這個表格中的 Cloud Monitoring 指標名稱必須加上 kubernetes.io/ 前置字元。表格中的項目已省略該前置字元。

指標類型 (資源階層層級)
顯示名稱
種類、類型、單位
受監控資源
說明
標籤
pod/latencies/pod_first_ready  (專案)
Pod 首次就緒延遲
GAUGE、Double、s
k8s_pod
Pod 端對端啟動延遲時間 (從 Pod Created 到 Ready),包括映像檔提取。每 60 秒取樣一次。
node/latencies/startup  (專案)
節點啟動延遲
GAUGE、INT64、s
k8s_node
節點的總啟動延遲時間,從 GCE 執行個體的 CreationTimestamp 到首次 Kubernetes node ready。每 60 秒取樣一次。

accelerator_family:根據硬體加速器分類的節點:gpu、tpu、cpu。
kube_control_plane_available:KCP (kube 控制層) 可用時,是否收到節點建立要求。
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds  (專案)
各 HPA 建議的資源調度延遲時間
GAUGE、DOUBLE、s
k8s_scale
水平 Pod 自動配置器 (HPA) 資源調度建議延遲時間 (從建立指標開始,到將相應的資源調度建議套用至 API 伺服器的時間),適用於 HPA 目標。取樣頻率為每 60 秒一次。取樣完畢後,會有多達 20 秒無法查看資料。

metric_type:指標來源類型。但應為 "ContainerResource"、"External"、"Object"、"Pods" 或 "Resource"。

查看工作負載的啟動延遲時間資訊主頁

工作負載的「Startup Latency」(啟動延遲) 資訊主頁僅適用於 Deployment。如要查看 Deployment 的啟動延遲指標,請在 Google Cloud 控制台中執行下列步驟:

  1. 前往「Workloads」(工作負載) 頁面。

    前往「Workloads」(工作負載)

  2. 如要開啟「部署作業詳細資料」檢視畫面,請點選要檢查的工作負載名稱。

  3. 按一下「可觀測性」分頁標籤。

  4. 選取左側選單中的「Startup Latency」。

查看 Pod 的啟動延遲分布

Pod 的啟動延遲是指總啟動延遲,包括映像檔提取,測量時間從 Pod 的 Created 狀態到 Ready 狀態。您可以使用下列兩張圖表,評估 Pod 的啟動延遲時間:

  • 「Pod Startup Latency Distribution」(Pod 啟動延遲時間分布) 圖表:這張圖表顯示 Pod 的啟動延遲時間百分位數 (第 50 個百分位數、第 95 個百分位數和第 99 個百分位數),這些百分位數是根據固定 3 小時時間間隔 (例如上午 12:00 至凌晨 3:00 和凌晨 3:00 至上午 6:00) 內 Pod 啟動事件的觀測結果計算得出。您可以使用這張圖表達成下列目的:

    • 瞭解基準 Pod 啟動延遲時間。
    • 找出 Pod 啟動延遲時間的變化趨勢。
    • 找出 Pod 啟動延遲時間變化與近期事件 (例如工作負載部署作業或叢集自動配置器事件) 之間的關聯。您可以在資訊主頁頂端的「Annotations」(註解) 清單中選取事件。
Pod 啟動延遲分布圖
圖: Pod 啟動延遲分布圖表
  • 「Pod Startup Count」(Pod 啟動次數) 圖表:這張圖表顯示在所選時間間隔內啟動的 Pod 數量。您可以將這張圖表用於下列用途:

    • 瞭解用於計算特定時間間隔內 Pod 啟動延遲時間分布百分位數的 Pod 樣本大小。
    • 瞭解 Pod 啟動的原因,例如工作負載部署作業或水平 Pod 自動調度資源事件。您可以在資訊主頁頂端的「Annotations」(註解) 清單中選取事件。
Pod 啟動次數圖表
圖: Pod 啟動數量圖表

查看個別 Pod 的啟動延遲時間

您可以在「Pod First Ready Latency」(Pod 首次準備就緒延遲時間)時間線圖和相關聯的清單中,查看個別 Pod 的啟動延遲時間。

  • 使用「Pod First Ready Latency」(Pod 首次就緒延遲時間) 時間線圖表,找出個別 Pod 啟動與近期事件 (例如水平 Pod 自動配置器或叢集自動配置器事件) 之間的關聯。您可以在資訊主頁頂端的「Annotations」(註解) 清單中選取這些事件。這張圖表有助於判斷啟動延遲時間與其他 Pod 相比出現變化的潛在原因。
  • 您可以查看「Pod First Ready Latency」(Pod 首次就緒延遲時間) 清單,找出啟動時間最長或最短的個別 Pod。您可以依「延遲時間」欄排序清單。找出啟動延遲時間最長的 Pod 後,您可以將 Pod 啟動事件與其他近期事件建立關聯,藉此排解延遲時間變長的問題。
「Pod First Ready Latency」(Pod 首次就緒延遲) 圖表
圖: Pod 首次就緒延遲時間圖表

如要瞭解個別 Pod 的建立時間,請查看對應 Pod 建立事件中 timestamp 欄位的值。如要查看 timestamp 欄位,請在Logs Explorer中執行下列查詢:

   log_id("cloudaudit.googleapis.com/activity") AND
   protoPayload.methodName="io.k8s.core.v1.pods.create" AND
   resource.labels.project_id=PROJECT_ID AND
   resource.labels.cluster_name=CLUSTER_NAME AND
   resource.labels.location=CLUSTER_LOCATION AND
   protoPayload.response.metadata.namespace=NAMESPACE AND
   protoPayload.response.metadata.name=POD_NAME

如要列出工作負載的所有 Pod 建立事件,請在上述查詢中使用下列篩選器: protoPayload.response.metadata.name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

比較個別 Pod 的延遲時間時,您可以測試各種設定對 Pod 啟動延遲時間的影響,並根據需求找出最佳設定。

判斷 Pod 排程延遲時間

Pod 排程延遲時間是指從 Pod 建立到 Pod 排定在節點上的時間長度。Pod 排程延遲時間會影響 Pod 的端對端啟動時間,計算方式為 Pod 排程事件的時間戳記減去 Pod 建立要求的時間戳記。

您可以在對應的 Pod 排程事件中,透過 jsonPayload.eventTime 欄位找到個別 Pod 排程事件的時間戳記。如要查看 jsonPayload.eventTime 欄位,請在 Logs Explorer 中執行下列查詢:

  log_id("events")
  jsonPayload.reason="Scheduled"
  resource.type="k8s_pod"
  resource.labels.project_id=PROJECT_ID
  resource.labels.location=CLUSTER_LOCATION
  resource.labels.cluster_name=CLUSTER_NAME
  resource.labels.namespace_name=NAMESPACE
  resource.labels.pod_name=POD_NAME

如要列出工作負載的所有 Pod 排程事件,請在上述查詢中使用下列篩選條件: resource.labels.pod_name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

查看映像檔提取延遲時間

如果節點上尚未提供映像檔,或需要重新整理映像檔,容器映像檔提取延遲就會導致 Pod 啟動延遲。最佳化映像檔提取延遲時間,可縮短叢集水平擴展事件期間的工作負載啟動延遲時間。

您可以查看「Kubelet 映像檔提取事件」表格,瞭解工作負載容器映像檔的提取時間,以及提取程序耗費的時間。

「Kubelet Image Pull Events」(Kubelet 映像檔提取事件) 表格
圖: Kubelet 映像檔提取事件資料表

jsonPayload.message 欄位會顯示映像檔提取延遲時間,其中包含類似下列的訊息:

  "Successfully pulled image "gcr.io/example-project/image-name" in 17.093s (33.051s including waiting). Image size: 206980012 bytes."

查看 HPA 資源調度建議的延遲時間分布

HPA 目標的水平自動調度 Pod 資源 (HPA) 資源調度建議延遲時間,是指從建立指標到將相應的資源調度建議套用至 API 伺服器之間的時間。最佳化 HPA 資源調度建議延遲時間,可縮短水平擴展事件期間的工作負載啟動延遲時間。

您可以在下列兩張圖表中查看 HPA 資源調度:

  • 「HPA 資源調度建議延遲分布」圖表:這個圖表會顯示 HPA 資源調度建議延遲時間的百分位數 (第 50、95 和 99 個百分位數),這些百分位數是根據過去 3 小時時間間隔內觀察到的 HPA 資源調度建議計算而得。您可以將這份圖表用於下列用途:

    • 瞭解 HPA 資源調度建議延遲時間基準。
    • 找出 HPA 資源調度建議延遲時間的變化趨勢。
    • 找出 HPA 資源調度建議延遲時間的變化與近期事件之間的關聯。您可以選取資訊主頁頂端「註解」清單中的事件。
「HPA Scaling Recommendation Latency Distribution」(HPA 資源調度建議延遲分布) 圖表
圖: HPA 資源調度建議延遲分布圖表
  • HPA 資源調度建議數量圖表:這個圖表顯示所選時間間隔內觀察到的 HPA 資源調度建議數量。使用圖表執行下列工作:

    • 瞭解 HPA 資源調度建議樣本大小。系統會使用這些樣本,計算特定時間間隔內 HPA 資源調度建議延遲時間分布的百分位數。
    • 將 HPA 資源調度建議與新的 Pod 啟動事件和水平 Pod 自動配置器事件建立關聯。您可以在資訊主頁頂端的「Annotations」(註解) 清單中選取事件。
HPA 資源調度建議數量圖表
圖: HPA 資源調度建議數量圖表

查看 Pod 的排程問題

Pod 排程問題可能會影響工作負載的端對端啟動延遲時間。如要縮短工作負載的端對端啟動延遲時間,請排解並減少這類問題的數量。

以下是可用於追蹤這類問題的兩張圖表:

  • 「無法排程/待處理/失敗的 Pod」圖表會顯示一段時間內無法排程、待處理和失敗的 Pod 數量。
  • 「Backoff/Waiting/Readiness Failed Containers」(輪詢/等待中/readiness 探測失敗的容器) 圖表會顯示一段時間內處於這些狀態的容器數量。

查看節點的啟動延遲時間資訊主頁

如要查看節點的啟動延遲時間指標,請在Google Cloud 控制台中執行下列步驟:

  1. 前往「Kubernetes Clusters」(Kubernetes 叢集) 頁面。

    開啟 Kubernetes 叢集清單

  2. 如要開啟「Cluster details」(叢集詳細資料) 檢視畫面,請按一下要檢查的叢集名稱。

  3. 點選「觀測能力」分頁標籤。

  4. 選取左選單中的「啟動延遲時間」。

查看節點啟動延遲分布

節點的啟動延遲是指總啟動延遲,也就是從節點的 CreationTimestamp 到 Kubernetes node ready 狀態所測量的時間。您可以在下列兩張圖表中查看節點啟動延遲時間:

  • 「Node Startup Latency Distribution」(節點啟動延遲時間分布) 圖表:這張圖表顯示節點啟動延遲時間的百分位數 (第 50、95 和 99 百分位數),計算依據是每 3 小時固定時間間隔 (例如凌晨 12:00 至凌晨 3:00,以及凌晨 3:00 至上午 6:00) 觀察到的節點啟動事件。這張圖表可用於下列用途:

    • 瞭解基準節點啟動延遲時間。
    • 找出節點啟動延遲時間的變化趨勢。
    • 找出節點啟動延遲時間的變化與近期事件 (例如叢集更新或節點集區更新) 之間的關聯。您可以在資訊主頁頂端的「Annotations」(註解) 清單中選取事件。
「Node Startup Latency Distribution」(節點啟動延遲分布) 圖表
圖: 節點啟動延遲分布圖表
  • 節點啟動次數圖表:這個圖表顯示所選時間間隔內啟動的節點數。這張圖表可用於下列用途:

    • 瞭解節點樣本大小,用於計算指定時間間隔內,節點啟動延遲時間的分布百分位數。
    • 瞭解節點啟動的原因,例如節點集區更新或叢集自動調度資源事件。您可以選取資訊主頁頂端的「註解」清單中的事件。
「Node Startup Count」(節點啟動數量) 圖表
圖: 節點啟動數量圖表

查看個別節點的啟動延遲時間

比較個別節點的延遲時間時,您可以測試各種節點設定對節點啟動延遲時間的影響,並根據需求找出最佳設定。您可以在「節點啟動延遲時間」時間線圖表和相關聯的清單中,查看個別節點的啟動延遲時間。

  • 使用「Node Startup Latency」(節點啟動延遲時間) 時間線圖表,找出個別節點啟動與近期事件 (例如叢集更新或節點集區更新) 之間的關聯。您可以找出與其他節點相比,啟動延遲時間發生變化的可能原因。您可以選取資訊主頁頂端的「註解」清單中的事件。

  • 您可以查看「Node Startup Latency」(節點啟動延遲時間) 清單,找出啟動時間最長或最短的個別節點。您可以依「Latency」(延遲時間) 欄排序清單。找出啟動延遲時間最長的節點後,您可以將節點啟動事件與其他近期事件建立關聯,排解延遲時間降低的問題。

「Node Startup Latency」(節點啟動延遲) 圖表
圖: 節點啟動延遲圖表

您可以查看對應節點建立事件中 protoPayload.metadata.creationTimestamp 欄位的值,瞭解個別節點的建立時間。如要查看 protoPayload.metadata.creationTimestamp 欄位,請在Logs Explorer中執行下列查詢:

   log_id("cloudaudit.googleapis.com/activity") AND
   protoPayload.methodName="io.k8s.core.v1.nodes.create" AND
   resource.labels.project_id=PROJECT_ID AND
   resource.labels.cluster_name=CLUSTER_NAME AND
   resource.labels.location=CLUSTER_LOCATION AND
   protoPayload.response.metadata.name=NODE_NAME

查看節點集區的啟動延遲時間

如果節點集區的設定不同 (例如執行不同的工作負載),您可能需要依節點集區分別監控節點啟動延遲。比較節點集區的節點啟動延遲時間時,您可以深入瞭解節點設定對節點啟動延遲時間的影響,進而最佳化延遲時間。

根據預設,「Node Startup Latency」(節點啟動延遲時間) 資訊主頁會顯示叢集中所有節點集區的匯總啟動延遲時間分布,以及個別節點啟動延遲時間。如要查看特定節點集區的節點啟動延遲時間,請使用資訊主頁頂端的 $node_pool_name_var 篩選器,選取節點集區名稱。

後續步驟