監控維護事件

本文說明如何使用指令列和 GKE 維護資訊主頁,查看主機維護作業。

查看主機維護作業有助於減少工作負載中斷,特別是對於長時間執行的 GKE 叢集,其工作負載可能會因定期基礎架構中斷而中斷。

如要進一步瞭解 GKE 的主機維護作業,請參閱「瞭解如何在 GKE 執行主機維護作業」。

監控維護作業通知

在 VM 預定進行維護事件之前,Compute Engine 會向所有 VM 推播通知。這些通知會回報 Compute Engine 維護期間的開始時間。如果 VM 已排定近期維護作業,但尚未開始,GKE 會將 scheduled-maintenance-time 新增至節點標籤。

如要監控及偵測即將進行的維護事件,您必須查看 GKE 和 Compute Engine 的通知。

查看 Compute Engine 即將進行的維護作業

當節點及其基礎 VM 排定進行中斷性主機事件,以及這些事件生效時,Compute Engine 會發出通知。通知內容包括預計開始時間、事件類型和其他詳細資料。

查看 GKE 即將執行的維護作業

您可以監控 GKE 上特定機器類型的近期維護事件。下表列出支援的機器類型,以及各類型所需的最低 GKE 版本:

機型 最低 GKE 版本
已連接 GPU 或 TPU 的機型 1.31.1-gke.2008000 以上版本
H4D 機型 1.32.6-gke.1060000 以上版本
c4a-highmem-96-metal 1.35.0-gke.2232000 以上版本
Titanium SSD 超過 18 TiB 的 Z3 機型 1.32.4-gke.1376000 以上版本
Z4D 機型,連接超過 42 TiB 的 Titanium SSD 1.36.3-gke.1244000 以上版本
Z4M 機型,且附加超過 48 TiB 的 Titanium SSD,或任何使用 Cloud RDMA 的 Z4M 執行個體 1.36.3-gke.1767000 以上版本

如要查看即將進行的維護事件,請採取下列任一做法:

  • 在節點層級查詢通知。如要進行這項操作,請執行下列指令:

    kubectl get nodes -l cloud.google.com/scheduled-maintenance-time \
        -L cloud.google.com/scheduled-maintenance-time
    

    輸出結果會與下列內容相似:

    NAME                         STATUS    SCHEDULED-MAINTENANCE-TIME
    <gke-accelerator-node-name>  Ready     1733083200
    <gke-accelerator-node-name>  Ready     1733083200
    [...]
    

    SCHEDULED-MAINTENANCE-TIME 欄代表秒數,以 Unix 紀元時間格式顯示。

  • 如要查詢這些通知,請檢查執行個體是否有維護事件通知,在節點中繼資料層級進行查詢。

  • 如果加速器最佳化機器家族支援進階維護,您可以存取 upcoming-maintenance 端點,取得已排定和已開始的維護事件相關資訊。

查看主機維護的 Kubernetes 事件

在 GKE 1.35 以上版本中,系統會發出追蹤主機維護生命週期的 Kubernetes 事件。這些 Kubernetes 事件可讓您精細掌握排定的 Compute Engine 期間、進行中的作業,以及維修或取消等極端情況,直接在 Kubernetes 環境中監控中斷情形。

您可以使用標準 Kubernetes 工具或透過 Cloud Logging 查看這些事件:

  1. 如要查看近期維護事件,請使用下列 kubectl 指令:

    kubectl get events -n kube-system --field-selector involvedObject.kind=Node
    

    Kubernetes 事件會在叢集中保留 60 分鐘,因此這個指令只會輸出每個節點的近期事件。

  2. 如要在 Cloud Logging 中查看事件,請按照下列步驟操作:

    1. 前往 Cloud de Confiance 控制台的「Logs Explorer」頁面:

      前往「Logs Explorer」頁面

    2. 請使用下列查詢:

    resource.type="k8s_node"
    log_id("events")
    jsonPayload.metadata.annotations."maintenance.gke.io/category"="HostMaintenance"
    

維護生命週期事件

維護生命週期事件會在 Kubernetes 節點資源上發出。下表說明 GKE 在 Compute Engine 主機維護生命週期中發出的事件:

原因 說明
MaintenanceWindowScheduled 已為節點排定 Compute Engine 主機維護期間
MaintenanceWindowCancelled 節點上的 Compute Engine 主機維護期間已清除
MaintenanceWindowRescheduled 原先排定的 Compute Engine 主機維護期間已變更,維護開始時間也已更新
CustomerTriggeredMaintenance Compute Engine 主機維護作業是透過 GKE 手動觸發
MaintenanceWindowStarted Compute Engine 主機維護作業已開始
TerminateOnHostMaintenance Compute Engine 發出終止信號 (TERMINATE_ON_HOST_MAINTENANCE) 時,會產生這項事件。如果啟用安全終止功能,GKE 會封鎖節點並排定 Pod 淘汰作業 (SIGTERM)。工作負載會根據機器級別,收到 5 到 60 分鐘的通知上限。
PodEvictionComplete 所有 Pod 都已成功從節點中剔除
MaintenanceWindowCleared Compute Engine 主機維護作業已完成,節點已恢復就緒狀態。

事件酬載資訊

如果可以透過 Compute Engine 取得即將進行的維護事件相關資訊,則每個事件也會包含酬載,其中含有註解資料,內含下列資訊:

  • Compute Engine 視窗詳細資料:包括 windowStartTime、windowEndTime 和 latestWindowStartTime。
  • 維護中繼資料:事件發生時的維護週期狀態、維護原因 (原因可能列為 SCHEDULED 或 UNSCHEDULED),以及 Compute Engine 期間是否可以重新排程。
  • Kubernetes 中繼資料:包括 Cluster_name、nodepool_name 和 node_name。

GKE 維護資訊主頁中的主機維護作業檢視畫面

GKE 維護資訊主頁提供主機維護作業的整合檢視畫面。資訊主頁會全面顯示叢集、節點集區和節點層級的維護活動。

資訊主頁是以 Observability Analytics 為基礎建構而成。顯示維護週期、節點狀態和歷來停機時間指標。

後續步驟