本文档介绍如何使用命令行和 GKE 维护信息中心查看主机维护操作。
查看主机维护操作有助于您缓解工作负载中断,尤其是对于长时间运行的 GKE 集群,这类集群的工作负载可能会因定期基础架构中断而中断。
如需详细了解 GKE 上的主机维护,请参阅 了解如何在 GKE 上执行主机维护。
监控维护通知
在虚拟机发生预定的维护事件之前,
Compute Engine 会向其所有虚拟机推送通知。这些通知会报告 Compute Engine
维护窗口的开始时间。如果虚拟机已预定即将进行的维护,但该维护尚未开始,GKE 会向节点标签添加 scheduled-maintenance-time。
如需监控和检测即将发生的维护事件,您必须查看来自 GKE 和 Compute Engine 的通知。
查看 Compute Engine 上即将进行的维护
当已为节点及其底层虚拟机计划中断性 主机事件时,以及当这些事件开始时,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 纪元时间格式显示。如需在节点元数据级别查询这些通知,请 检查实例是否存在维护事件 通知。
对于支持 高级维护的加速器优化机器家族,您可以访问
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 中查看事件,请执行以下操作:
前往控制台中的 Logs Explorer 页面: Google Cloud
使用以下查询:
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 |
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 构建。它会显示维护周期、节点状态和历史停机时间指标。