监控维护事件

本文档介绍如何使用命令行和 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 查看这些事件:

  1. 如需查看最近的维护事件,请使用以下 kubectl 命令:

    kubectl get events -n kube-system --field-selector involvedObject.kind=Node
    

    Kubernetes 事件会在集群中保留 60 分钟,因此此命令仅输出每个节点的这些近期事件。

  2. 如需在 Cloud Logging 中查看事件,请执行以下操作:

    1. 前往控制台中的 Logs Explorer 页面: Google Cloud

      转到 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 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 窗口详细信息: 包括 windowStartTimewindowEndTimelatestWindowStartTime
  • 维护元数据: 事件发生时维护周期的状态、维护原因(原因可以列为 SCHEDULEDUNSCHEDULED),以及 Compute Engine 窗口是否可以重新安排。
  • Kubernetes 元数据: 包括 Cluster_name、nodepool_name 和 node_name。

GKE 维护信息中心内的主机维护操作视图

GKE 维护信息中心 提供 主机维护操作的统一视图。该信息中心可让您全面了解集群、节点池和节点级维护活动。

该信息中心基于 Observability Analytics 构建。它会显示维护周期、节点状态和历史停机时间指标。

后续步骤