本文档介绍了如何使用命令行和 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 或更高版本。
- 对于 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 纪元时间格式显示。如需在节点元数据级别查询这些通知,请检查实例是否存在维护事件通知。
对于支持高级维护的加速器优化机器家族,您可以访问
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 维护窗口和排除项。