接收集群升级通知

Google Kubernetes Engine (GKE) 将升级通知发布到 Pub/Sub,为您提供了一个渠道,接收来自 GKE 的关于您的集群的信息,从而更好地预测系统为您的集群安排的重要更新。

GKE 升级通知具有以下优点:

  • 您会收到有关为您的集群安排的更新的主动信息,便于您更好地规划测试和资格审核,并且有助于确保预测的升级过程顺畅进行。
  • 在有可以升级的新 GKE 版本时,您会收到通知。以前,您必须查看 GKE 版本说明GKE API 才能了解新 GKE 版本的发布时间。
  • 您将在集群升级(包括用户启动的升级和 GKE 启动的升级)时收到通知,从而更深入地了解集群的后台操作。
  • Pub/Sub 的可扩展性很强,让您可以灵活地处理传入通知。例如,您可以集成 Slack 以将通知转发到 Slack 频道,或者启动 Cloud Functions 来运行自定义进程。
  • 如果需要自定义流程(例如,编排从预演环境到生产环境的工作流,以测试和认证升级),您可以使用通知自动触发这些工作流。

升级通知的类型

GKE 会发送以下集群升级通知:UpgradeAvailableEventUpgradeEvent

UpgradeAvailableEvent

在通过发布版本推出新版本时,GKE 会向使用该发布版本的集群发送 UpgradeAvailableEvent 通知,以通知集群已推出一个新版本。此通知针对补丁程序版本提供一周的提前通知,针对次要版本至少提前 2-4 周(具体取决于发布版本)。如需了解详情,请参阅一个发布版本中提供哪些版本

对于未使用发布版本的集群,GKE 会向集群发送新通知,说明集群可以升级到的新版本(当前次要版本的补丁程序和下一个次要版本)。集群和节点池(已启用自动升级)可能会在收到 UpgradeAvailableEvent 通知后很快进行升级,因为在发布渠道之外的集群没有提前通知的保证。

UpgradeEvent

当您或 GKE 启动升级时,GKE 会发送 UpgradeEvent 通知,让您了解正在进行升级。您应该已经通过 UpgradeAvailableEvent 通知得知即将有升级发布,您可以提前升级,也可以采取必要措施做好准备(或设置维护期等)。

通知会在升级操作开始时发送。操作 ID 会在 UpgradeEvent 中传递。

启用升级通知

您可以通过执行以下任务,在新集群或现有集群上启用 GKE 升级通知:

  1. 在项目中创建 Pub/Sub 主题,然后指定主题名称。

  2. 使用以下命令之一在集群上启用 GKE 升级通知:

    对于新集群

    gcloud container clusters create CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    对于现有集群

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    替换以下内容:

    • CLUSTER_NAME:您的集群的名称。
    • PROJECT:您的集群和主题的项目 ID 或编号。集群和主题的项目必须相同。
    • TOPIC_NAME:您的 Pub/Sub 主题的名称。
  3. 为您的主题创建 Pub/Sub 订阅

只要主题与集群位于同一项目中,GKE 就不会限制主题与集群的关联方式。您可以选择为所有集群创建一个主题,或者为多组集群创建多个主题。

验证通知设置

如需验证您为集群正确设置了升级通知,请执行以下操作:

  1. 升级集群中的节点池:

    gcloud container clusters upgrade CLUSTER_NAME \
        --cluster-version VERSION \
        --node-pool NODE_POOL_NAME
    

    替换以下内容:

    • CLUSTER_NAME:包含节点池的集群的名称。
    • VERSION:要将节点池升级到的版本。如果您不想升级节点池版本,请改为指定节点池的当前版本。
    • NODE_POOL_NAME:节点池的名称。
  2. 检查 Pub/Sub 订阅以查看通知消息。

停用升级通知

如需停用 GKE 升级通知,请执行以下任务:

  1. 更新集群以停用通知:

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=DISABLED
    

    替换以下内容:

    • CLUSTER_NAME:现有集群的名称。
  2. (可选)删除您为通知创建的 Pub/Sub 主题。

读取通知配置

如需读取通知配置,请使用以下命令:

gcloud container clusters describe CLUSTER_NAME

输出类似于以下内容:

name: c1
location: us-central1-c
notificationConfig:
  enabled: True
  topic: AnotherTopic

使用通知

Pub/Sub 消息包含两个字段:数据(字符串)和特性(字符串到字符串映射)。

对于 GKE 通知,GKE 会在数据字段中发送人类可读的消息。特性包含一般通知信息(例如项目编号、集群名称和集群位置)以及特定的通知类型(例如 UpgradeAvailableEventUpgradeEvent)。

无论载荷如何,通知始终包含以下特性:

属性 说明 示例
project_id 拥有集群的项目编号。 123456789
cluster_location 集群的位置。 us-central1-c
cluster_name 集群的名称。 my-cluster
type_url 通知的类型。 type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload

包含通知特定信息的 JSON 可解析字符串。

第一个示例特定于 UpgradeEvent 通知。

第二个示例特定于使用 Windows 节点池的集群的 UpgradeAvailableEvent 通知。


{ "resourceType":"MASTER",
  "operation":"operation-1595889094437-87b7254a",
  "operationStartTime":"2020-07-27T22:31:34.437652293Z",
  "currentVersion":"1.15.12-gke.2",
  "targetVersion":"1.15.12-gke.9"}

{ "version":"1.17.15-gke.800",
  "resourceType":"MASTER",
  "releaseChannel":"RAPID",
  "windowsVersions": [
    {
      "imageType": "WINDOWS_SAC",
      "osVersion": "10.0.18363.1198",
      "supportEndDate": {
        "day": 10,
        "month": 5,
        "year": 2022
      }
    },
    {
      "imageType": "WINDOWS_LTSC",
      "osVersion": "10.0.17763.1577",
      "supportEndDate": {
        "day": 9,
        "month": 1,
        "year": 2024
      }
    }
  ]
}

GKE 将始终发送 Beta 版通知类型,但载荷可解析为相应的 GA (v1) 类型(如果有)。

过滤通知

您应配置 Pub/Sub 订阅,以仅过滤您要使用的通知类型。例如,您可以使用以下过滤语法,将订阅配置为仅接收 UpgradeAvailableEvent 通知:

attributes.type_url = "type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent"

如需了解详情,请参阅 Pub/Sub 过滤

后续步骤