本文說明如何使用指令列和 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 以上版本。
- 如果是 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 以上版本。
- 對於附加超過 41 TiB Titanium SSD 的 Z4D 機器類型,版本必須為 1.36.3-gke.1244000 以上。
如要查看即將進行的維護作業,請採取下列任一做法:
在節點層級查詢通知。如要進行這項操作,請執行下列指令:
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 查看這些事件:
如要查看最近的維護事件,請使用下列
kubectl指令:kubectl get events -n kube-system --field-selector involvedObject.kind=NodeKubernetes 事件會在叢集中保留 60 分鐘,因此這項指令只會輸出每個節點的近期事件。
如要在 Cloud Logging 中查看事件,請執行下列操作:
前往 Google Cloud 控制台的「Logs Explorer」頁面:
請使用下列查詢:
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 視窗詳細資料:包括
windowStartTime、windowEndTime和latestWindowStartTime。 - 維護中繼資料:事件發生時的維護週期狀態、維護原因 (原因可能列為
SCHEDULED或UNSCHEDULED),以及 Compute Engine 視窗是否可以重新排定時間。 - Kubernetes 中繼資料:包括 Cluster_name、nodepool_name 和 node_name。
GKE 維護作業資訊主頁中的主機維護作業檢視畫面
GKE 維護資訊主頁會集中顯示主機維護作業。這個資訊主頁可讓您全面掌握叢集、節點集區和節點層級的維護活動。
這個資訊主頁是以 Observability Analytics 為基礎建構而成。並顯示維護週期、節點狀態和過往停機時間指標。
後續步驟
- 瞭解如何在主機維護期間管理節點中斷情形。
- 瞭解如何對執行加速器工作負載的節點執行主機維護作業。
- 瞭解 GKE 維護期間和排除時段。