監控維護事件

本文說明如何使用指令列和 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 1.31.1-gke.2008000 以上版本中,您可以監控特定機器類型的近期維護事件。

  • 對於附加 GPU 或 TPU 的機器類型,版本必須為 1.31.1-gke.2008000 以上
  • 如為 SSD 容量超過 18 TiB 的 Z3 機型,請使用 1.32.4-gke.1376000 以上版本
  • H4D 機型:1.32.6-gke.1060000 以上版本
  • 如果是 c4a-highmem-96-metal,請使用 1.35.0-gke.2232000 以上版本

如要查看即將進行的維護作業,請執行下列任一操作:

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

    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 Epoch 時間格式顯示。

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

  • 對於支援進階維護的加速器最佳化機器系列,您可以存取 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 節點資源會發出維護生命週期事件。下表說明 Compute Engine 主機維護生命週期中,GKE 發出的事件:

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

事件酬載資訊

如果可透過 Compute Engine 取得即將進行的維護作業相關資訊,每個事件也會包含酬載,內含附註資料和下列資訊:

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

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

GKE 維護資訊主頁會集中顯示主機維護作業。這個資訊主頁可讓您全面掌握叢集、節點集區和節點層級的維護活動。

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

後續步驟