叢集通知

本文說明 Google Kubernetes Engine (GKE) 如何在 GKE 叢集發生特定事件時,預設將叢集通知發布至 Cloud Logging (也可選擇發布至 Pub/Sub)。這些通知包含與叢集設定相關的事件資訊,例如排定、可用或進行中的升級、安全性公告,以及支援終止日期。如要在 Cloud Logging 中尋找這些記錄,請參閱「在 Cloud Logging 中查看叢集通知」。

GKE 也會將這些事件的通知,以訊息形式發布至您設定的 Pub/Sub 主題。您可以透過 Pub/Sub 訂閱項目接收這類通知、整合第三方服務,並篩選需要的通知類型。如要進一步瞭解如何透過 Pub/Sub 設定叢集通知,請參閱「透過 Pub/Sub 接收叢集通知」。

除了叢集通知,GKE 也會將推出作業排序功能 (含自訂階段) 的通知傳送至 Cloud Logging。

優點

叢集通知具有下列優點:

  • 當系統發布叢集專屬的安全性公告時,您會收到通知,其中提供準確的風險和影響資訊。
  • 當叢集有新的 GKE 版本可用時,您會收到通知,以便妥善規劃測試和資格程序,確保升級過程順利且可預測。以往您必須查看 GKE 版本資訊或 GKE API,才能得知新版 GKE 的發布時間。
  • 當 GKE 或使用者啟動叢集升級,以及升級作業完成時,您都會收到通知,進一步掌握叢集的背景作業。
  • 當叢集執行的 GKE 子版本即將或已結束支援時,您會收到通知。
  • 您可以選擇使用 Cloud Logging 或 Pub/Sub:

    • 叢集通知預設會傳送至 Cloud Logging。您可以運用 Cloud Logging 的所有功能,包括查詢及查看記錄,以及設定以記錄為準的警告政策。
    • Pub/Sub 具有高度擴充性,可彈性處理傳入的通知。舉例來說,您可以整合 Slack,將通知轉送至 Slack 頻道,或啟動 Cloud Run 函式來執行自訂程序。如果需要自訂程序 (例如,協調從預先發布到正式環境的工作流程,以測試及認證升級),您可以使用通知自動觸發這些工作流程。

推出作業排序通知會告知您下列事項:

  • 推出作業序列中,含有自訂階段的推出作業進度。通知可讓您隨時掌握推出狀態,以便監控叢集和工作負載的效能,並視需要採取行動。
  • 如果自訂階段的推出序列設定有誤,表示您需要修正。

升級通知類型

GKE 會傳送下列叢集通知類型:

如果您在 Cloud Logging 中查看叢集通知,可以使用 Cloud Logging 的功能篩選記錄。如果使用 Pub/Sub,可以篩選收到的通知,只接收相關事件的通知。

針對自訂階段的推出作業排序,GKE 會傳送下列推出作業排序通知類型:

SecurityBulletinEvent

如果 GKE 發布的安全性公告與您的叢集設定或版本直接相關,GKE 會傳送SecurityBulletinEvent通知,提供有關安全漏洞、影響和可採取行動 (如適用) 的資訊。

UpgradeAvailableEvent

當發布管道推出新版本時,GKE 會向該發布管道上的叢集傳送 UpgradeAvailableEvent 通知,告知叢集有新版本可用。修補程式版本會提前一週通知,子版本則會提前至少 2 到 4 週通知 (視版本而定)。詳情請參閱「管道提供哪些版本」。

如果叢集不在發布管道中,GKE 會針對叢集可升級的所有新版本傳送 UpgradeAvailableEvent 通知,包括目前子版本和下一個子版本的修補程式。

如果您使用 Windows Server 節點集區,Windows 版本資訊會做為 UpgradeAvailableEvent 通知的一部分傳送。

UpgradeEvent

當您或 GKE 啟動升級作業時,GKE 會傳送 UpgradeEvent 通知,告知您升級作業已開始。理想情況下,您應該使用 UpgradeAvailableEvent 通知類型,瞭解即將進行的升級,以便提前升級或採取必要措施做好準備,例如設定維護期間。

升級作業開始時,系統會傳送 UpgradeEvent 通知。作業 ID 會在訊息中傳遞。

如要透過兩階段控制層子版本升級程序,安全地進行回溯,GKE 會在二進位檔升級和模擬版本升級開始時傳送這項通知。如要進一步瞭解 GKE 提供的詳細資料,請參閱「兩階段升級通知包含哪些內容」。

UpgradeInfoEvent

GKE 會針對不同類型的事件傳送 UpgradeInfoEvent 通知,詳情請參閱後續章節。

如要進一步瞭解如何篩選特定類型的UpgradeInfoEvent,請參閱「篩選UpgradeInfoEvent叢集通知」。

排定的叢集升級作業

GKE 排定叢集升級作業時,會在 72 到 96 小時前通知您。如要進一步瞭解如何啟用排定的叢集升級作業,請參閱「接收排定的叢集升級作業通知」。

升級作業已完成

GKE 完成自動或手動升級叢集控制層或節點的作業後,會傳送通知告知您作業已完成。作業完成時會處於下列其中一種狀態:

  • SUCCEEDED:GKE 已成功升級控制層或節點。
  • FAILED:GKE 無法升級控制層或節點。
  • CANCELED:GKE 因技術或業務原因取消升級作業,或您取消升級作業。

使用通知確認升級作業是否成功。

兩步驟升級通知包含哪些資訊

如果是兩步驟控制層次要升級,且具備復原安全性,GKE 會在二進位檔升級完成後 (即浸泡時間開始時) 傳送這則通知,並在模擬版本升級完成後再次傳送。這些通知包含下列資訊 (視兩步驟升級狀態而定):

  • 初始版本
  • 目標版本
  • 初始模擬版本
  • 目標模擬版本

子版本即將或已經終止支援

如果叢集執行的 GKE 子版本即將結束標準支援服務或延長支援服務,或已達到上述任一里程碑,GKE 會傳送通知,要求您將叢集控制層或節點升級至下一個支援的子版本。執行支援的子版本,可確保您繼續接收安全性修補程式、修正錯誤和支援。如果叢集仍執行該子版本,GKE 會在支援期結束前 30 天和支援期結束時,各傳送一則通知。

GKE 會傳送叢集層級通知,但叢集的多個元件可能會受到影響,且叢集可以同時執行不同的子版本。如果子版本即將結束標準支援服務,而您需要時間準備升級至支援的版本,可以切換至延長發布管道,取得長期支援。否則,GKE 會在支援期結束時安排自動升級。這些通知可協助您做好準備,因應這些終止支援政策的實施。

通知包含下列詳細資料:

  • 受影響的叢集。
  • 目前版本即將或已經終止支援。
  • 終止支援日期。

如要進一步瞭解 GKE 子版本的支援時間軸,請參閱「GKE 子版本生命週期」。

在延長支援期間,新修補程式版本會變更為新的 Container-Optimized OS 里程碑

如果叢集在延長支援期內註冊於擴充版,且 GKE 子版本使用的 Container-Optimized OS 里程碑比子版本更早結束支援期限,GKE 就會傳送叢集通知。當使用新里程碑的第一個修補程式版本在延長版中推出時,GKE 就會傳送這項通知。

這類通知包含下列詳細資料:

  • 受影響的叢集。
  • 使用新里程碑的修補程式版本。
  • 現有和新的里程碑。
  • GKE 如何暫停節點的自動修補程式升級作業。

使用新里程碑的修補程式版本最終會成為叢集的修補程式自動升級目標,節點自動升級則會暫停。叢集管理員必須決定採取下列哪項後續步驟:

  • 手動將叢集節點升級至下一個修補程式版本,該版本會使用下一個 Container-Optimized OS 里程碑。
  • 手動將叢集升級至下一個子版本。
  • 在 GKE 於延長支援期結束前將叢集升級至下一個子版本之前,不進行修補程式升級。

詳情請參閱「Container-Optimized OS 里程碑在子版本延長支援結束前即終止支援」。

節點集區升級期間的中斷事件

節點集區升級期間,如果節點集區發生特定類型的中斷事件,GKE 會傳送通知,告知您這項事件。

GKE 會針對下列類型的中斷事件傳送叢集通知:

這則通知包含下列詳細資料:

  • 受這項中斷事件影響的節點。
  • 受這項中斷事件影響的 Pod。
  • 觸發節點排空的作業。
  • Pod 強制刪除前的 PDB 超時。

RolloutEvent

在具有自訂階段的推出序列中,推出 GKE 版本時,如果發生下列事件,GKE 會傳送通知:

  • ROLLOUT_CREATED:已建立新的推出作業。
  • ROLLOUT_STAGE_TRANSITION:推出作業中的某個階段已轉換至新狀態。
  • ROLLOUT_BLOCKED:控制層或節點集區不符合升級資格,因此推出作業遭到封鎖。
  • ROLLOUT_AUTO_PAUSED:GKE 已自動暫停推出作業。
  • ROLLOUT_AUTO_RESUMED:推出作業在暫停後已自動恢復。
  • ROLLOUT_CANCELLATION_WARNING:推出作業已暫停過久,如未恢復,將在七天後自動取消。
  • ROLLOUT_AUTO_CANCELLED:GKE 已自動取消推出作業。
  • ROLLOUT_COMPLETED:推出作業已順利完成。

RolloutSequenceEvent

如果推出作業序列含有自訂階段,GKE 會在下列情況傳送通知:

  • SEQUENCE_MISCONFIGURED:推出作業排序功能設定有誤,也就是說,GKE 無法以目前的設定,依序執行升級作業。
  • SEQUENCE_DEACTIVATION_WARNING:警告,如果未修正設定錯誤,GKE 將停用推出作業序列。

在 Cloud Logging 中查看叢集通知

下列操作說明適用於叢集通知和推出順序通知。

如要查看 GKE 叢集的記錄,請參閱「存取記錄」。

如要停用這項記錄儲存功能,請設定排除篩選器。

在 Cloud Logging 中使用下列篩選器查看記錄,即可查看所有類型的叢集通知:

logName=projects/PROJECT_ID/logs/container.googleapis.com%2Fnotifications

將 PROJECT_ID 替換為 Cloud de Confiance by S3NS 專案 ID。

使用下列篩選器查看記錄,即可查看特定叢集通知類型,例如 UpgradeEvent:

jsonPayload.@type=type.googleapis.com/google.container.v1beta1.NOTIFICATION_TYPE

將 NOTIFICATION_TYPE 替換為要查看的記錄所屬叢集通知類型。

篩選 UpgradeInfoEvent 叢集通知

使用下列篩選器查看記錄,即可查看特定 UpgradeInfoEvent,例如升級作業完成時的通知:

jsonPayload.@type=type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
jsonPayload.eventType=EVENT_TYPE

將 EVENT_TYPE 替換為下列其中一個值:

篩選 Pub/Sub 通知

您可以篩選叢集通知,確保 Pub/Sub 只傳送您需要的通知。您可以透過下列任一方式,為 Pub/Sub 的通知套用篩選條件:

如要在 Cloud Logging 中查看及篩選通知,請參閱「在 Cloud Logging 中查看叢集通知」。

在 GKE 中篩選傳送至 Pub/Sub 的通知

啟用叢集通知時,您可以指定 --notification-config 旗標中的 filter 值,為一或多種可用的通知類型設定 Pub/Sub 篩選功能。filter 接受以直線符號 ( | ) 分隔的通知類型清單。

舉例來說,指定 filter="UpgradeEvent|SecurityBulletinEvent" 會指示 GKE 僅傳送 UpgradeEvent 和 SecurityBulletinEvent 通知類型的通知。

使用 filter 篩選通知有以下好處:

  • 使用更簡單,因為您可依通知類型篩選,不必使用特定語法。
  • 篩除的通知不會傳送至 Pub/Sub,因此您不必支付未傳送訊息的費用。
  • 您隨時可以編輯篩選器設定。

如需在 GKE 中篩選通知的操作說明,請參閱「透過 Pub/Sub 接收叢集通知」。

在 GKE 中篩選通知不會影響 Cloud Logging 顯示的記錄。

在 Pub/Sub 中篩選通知

Pub/Sub 支援使用篩選語法篩選訂閱項目中的訊息。使用這個方法時,GKE 會將所有通知類型傳送至 Pub/Sub 主題。Pub/Sub 會根據訂閱項目設定篩選訊息,並傳送您想接收的訊息。

舉例來說,您可以在訂閱項目中使用下列語法,篩選 UpgradeEvent 和 UpgradeAvailableEvent 通知:

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

系統仍會向您收取未傳送訊息的費用。訂閱設定完成後,無法再修改篩選器。不過,篩選語法的擴充性比 GKE 篩選功能更高。

如要進一步瞭解如何篩選 Pub/Sub 訂閱項目,請參閱「篩選訊息」。

在 Cloud Logging 中設定叢集通知快訊

您可以設定記錄檔快訊,在發生特定叢集事件時接收通知。以下章節提供設定記錄式警告的基本範例,您也可以在監控資訊主頁範例存放區中找到其他範例。

建立記錄式警告

如要為特定通知類型建立快訊,請完成下列步驟。以下步驟以 UpgradeEvent 為例。

  1. 前往 Cloud de Confiance 控制台的「Logs Explorer」。

  2. 在「Query」(查詢) 欄位中輸入下列查詢,篩選出所選聲明類型:

    resource.type="RESOURCE_TYPE"
    log_id("container.googleapis.com/notifications")
    jsonPayload.@type="type.googleapis.com/google.container.v1beta1.NOTIFICATION_TYPE"
    

    更改下列內容:

    • RESOURCE_TYPE:要篩選的資源類型,例如 gke_cluster 或 gke_nodepool,或兩者組合。
    • NOTIFICATION_TYPE:要發出快訊的叢集通知類型,例如 UpgradeEvent。

    部分通知類型需要額外篩選。舉例來說,如要篩選特定類型的 UpgradeInfoEvent,請在查詢中加入 jsonPayload.eventType 篩選器。下列範例查詢會篩選出事件類型為 UPGRADE_LIFECYCLE 的 UpgradeInfoEvent:

    resource.type="RESOURCE_TYPE"
    log_id("container.googleapis.com/notifications")
    jsonPayload.@type="type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent"
    jsonPayload.eventType="UPGRADE_LIFECYCLE"
    

    如要進一步瞭解如何篩選 UpgradeInfoEvent,請參閱「篩選 UpgradeInfoEvent 叢集通知」。

  3. 在「動作」選單下方,點選「建立記錄檔警告」。

  4. 在「警告詳細資料」頁面中,為警告政策命名,然後點選「下一步」。

    在「Define log entries to alert on」(定義要發出快訊的記錄項目) 部分,系統會預先填入查詢。

  5. 在「擷取記錄標籤」部分中,按一下「新增標籤」。擷取記錄標籤有助於提供更詳盡的通知。舉例來說,針對 UpgradeEvent,您可以加入下列標籤,納入升級的目前和目標版本:

    • CurrentVersion:jsonPayload.currentVersion
    • TargetVersion:jsonPayload.targetVersion
  6. 點選「下一步」。

  7. 設定通知頻率和自動關閉時間長度,然後按一下「下一步」。

  8. 在「Who should be notified?」(應該通知誰?) 部分,選取要接收快訊的通知管道,然後點選「Save」(儲存)。

設定快訊後,UpgradeEvent 的通知會包含 CurrentVersion 和 TargetVersion 標籤,直接在通知中提供實用背景資訊。

取用 Pub/Sub 訊息

Pub/Sub 訊息包含兩個欄位:data (字串) 和 attributes (字串對字串對應)。

如果是 GKE 通知,data 欄位會包含清楚易懂的資訊。attributes 欄位包含一般通知資訊,例如通知類型、專案 ID、叢集名稱和叢集位置。attributes.payload 欄位是 JSON 可剖析字串,內含特定通知資訊,例如安全性公告的詳細資料。

通知一律包含下列屬性:

屬性 說明 範例
project_id 叢集所屬專案的編號。 123456789
cluster_location 叢集位置。 us-central1-c
cluster_name 叢集名稱。 example-cluster
type_url 通知類型。 type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload 可剖析 JSON 的字串,內含通知專屬資訊。
{ "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"}

GKE 一律會傳送beta通知類型。不過,如果有效負載中含有對應的 Google Analytics 通知類型,您可以剖析有效負載並顯示該類型。

叢集通知訊息範例

除了 data 欄位中的文字,GKE 傳送至 Cloud Logging 或 Pub/Sub 的每則訊息,在 attributes.type_url 和 attributes.payload 欄位中都有特定值。下表列出您可能收到的各類通知資訊範例:

SecurityBulletinEvent

如果訊息的 a SecurityBulletinEvent 為:

屬性
type_url type.googleapis.com/google.container.v1beta1.SecurityBulletinEvent
payload
{    "resourceTypeAffected":"RESOURCE_TYPE_CONTROLPLANE",
         "bulletinId":"GCP-2021-001",
         "cveIds":[
            "CVE-2021-3156"
         ],
         "severity":"Medium",
         "briefDescription":"A vulnerability was recently discovered in the Linux utility sudo, described in CVE-2021-3156, that may allow an attacker with unprivileged local shell access on a system with sudo installed to escalate their privileges to root on the system.",
         "affectedSupportedMinors":["1.18", "1.19"],
         "patchedVersions":["1.18.9-gke.1900", "1.19.9-gke.1900"],
         "suggestedUpgradeTarget":"1.19.9-gke.1900",
         "bulletinUri":"https://docs.cloud.google.com/kubernetes-engine/security-bulletins#gcp-2021-001"
      }
      

UpgradeAvailableEvent

UpgradeAvailableEvent 訊息的輸出內容大致如下:

屬性
type_url type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent
payload
{ "version":"1.17.15-gke.800",
  "resourceType":"MASTER",
  "releaseChannel":{"channel":"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
      }
    }
  ]
}

      

UpgradeEvent

UpgradeEvent 訊息的輸出內容大致如下:

屬性
type_url type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload
{ "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"}
      

這項輸出內容代表單一控制層升級的通知。 兩步驟升級通知會包含不同資訊。如要進一步瞭解不同類型的控制層升級,請參閱「升級叢集的控制層」。

UpgradeInfoEvent

升級作業完成時,UpgradeInfoEvent 訊息的輸出內容會與下列內容相似,例如這個節點集區升級範例:

屬性
type_url type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
payload
{ "currentVersion":"1.31.1-gke.1846000",
  "endTime":"2024-11-06T17:12:54.111640650Z",
  "operation":"operation-1730912205658-de2f88a8-6290-4718-b2c1-fb19611060b8",
  "resource":"projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME",
  "resourceType":"NODE_POOL"
  "startTime":"2024-11-06T16:56:45.658321844Z",
  "state":"SUCCEEDED",
  "targetVersion":"1.31.1-gke.2105000"}
      

這項輸出內容與控制層升級通知不同,後者的訊息適用於即將或已終止支援的子版本、在延長支援期間,新的修補程式版本變更為新的 Container-Optimized OS 里程碑,或節點集區升級期間的中斷事件。

排定的叢集升級通知

如果已排定叢集升級作業,且已啟用排定升級通知,GKE 會針對排定的控制層升級作業,傳送類似下列的輸出 UpgradeInfoEvent 訊息:

屬性
type_url type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
payload
{
  "insertId": "[...]",
  "jsonPayload": {
    "description": "Your cluster control plane will be upgraded to 1.32.9-gke.1239000 after 2025-12-13 12:46 UTC",
    "startTime": "2025-12-13T12:46:37.380970854Z",
    "targetVersion": "1.32.9-gke.1239000",
    "@type": "type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent",
    "currentVersion": "1.31.14-gke.1081000",
    "eventType": "UPGRADE_LIFECYCLE",
    "state": "SCHEDULED",
    "resourceType": "MASTER"
  },
  "resource": {
    "type": "gke_cluster",
    "labels": {
      "cluster_name": "CLUSTER_NAME",
      "location": "LOCATION",
      "project_id": "PROJECT_ID"
    }
  },
  "timestamp": "2025-12-10T12:46:37.989407414Z",
  "severity": "NOTICE",
  "logName": "projects/PROJECT_ID/logs/container.googleapis.com%2Fnotifications",
  "receiveTimestamp": "2025-12-10T12:46:38.007312354Z"
}
      

GKE 會針對排定的節點升級作業,傳送類似下列內容的輸出訊息:

屬性
type_url type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
payload
{
  "insertId": "[...]",
  "jsonPayload": {
    "description": "Your cluster node pools will be upgraded to 1.32.9-gke.1239000 (or latest target patch) after 2025-12-13 12:46 UTC: NODE_POOL_1, NODE_POOL_2, [...] and 23 more.",
    "startTime": "2025-12-13T12:46:37.380970854Z",
    "targetVersion": "1.32.9-gke.1239000",
    "@type": "type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent",
    "currentVersion": "1.31.14-gke.1081000",
    "eventType": "UPGRADE_LIFECYCLE",
    "state": "SCHEDULED",
    "resource": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_1",
    "resourceType": "NODE_POOL"
  },
  "resource": {
    "type": "gke_nodepool",
    "labels": {
      "cluster_name": "CLUSTER_NAME",
      "location": "LOCATION",
      "nodepool_name": "NODE_POOL_NAME",
      "project_id": "PROJECT_ID"
    }
  },
  "timestamp": "2025-12-10T12:46:37.989407414Z",
  "severity": "NOTICE",
  "logName": "projects/PROJECT_ID/logs/container.googleapis.com%2Fnotifications",
  "receiveTimestamp": "2025-12-10T12:46:38.007312354Z"
}
      

對於排定的節點升級 (依自動升級目標分組),GKE 會依字母順序列出最多 10 個節點集區,但只提供第一個節點集區的詳細資訊。如果排定的節點集區超過 10 個,GKE 會顯示未列出的剩餘集區數量 (例如本例中的 33 項升級)。

後續步驟