本文說明如何使用指令列和 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 查看這些事件:
如要查看最近的維護事件,請使用下列
kubectl指令:kubectl get events -n kube-system --field-selector involvedObject.kind=NodeKubernetes 事件會在叢集中保留 60 分鐘,因此這項指令只會輸出每個節點的近期事件。
如要在 Cloud Logging 中查看事件,請執行下列操作:
前往 Cloud de Confiance 控制台的「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 維護期間和排除時段。