代管資料層

代管 Cloud Service Mesh 可讓您在服務網格中,自動更新 Proxy 和插入的閘道。啟用代管資料層後,Google 會重新啟動工作負載,重新插入最新版 Proxy,自動更新 Sidecar Proxy 和插入的閘道,並搭配代管控制層。這項推出作業會在控制層升級後開始,通常會在兩週內完成。

請注意,代管資料層仰賴 GKE 發布管道。如果在啟用代管資料層時變更 GKE 發布管道,代管 Cloud Service Mesh 會更新所有現有工作負載的 Proxy,就像推出代管資料層一樣。

如果停用,系統會根據叢集內 Pod 的自然生命週期,被動管理 Proxy,且使用者必須手動觸發,才能控制更新頻率。

代管資料層會逐出執行舊版 Proxy 的 Pod,藉此升級 Proxy。系統會逐步執行淘汰作業,並遵循 Pod 中斷預算和控制變更率。

部署新版 Cloud Service Mesh 資料層時

代管資料層 觸發新 Cloud Service Mesh 資料層部署作業的事件
Cloud Service Mesh 主動更新
有新版本時主動更新。1
建立新的 Pod
您或水平自動調度 Pod 資源功能部署新的工作負載時
GKE 維護期間
在 GKE 維護期間更換節點時
已啟用
已停用

1 Cloud Service Mesh 主動更新會自動取代工作負載中的 Pods,但 StatefulSets、Jobs、DaemonSets 和手動插入的 Pods 除外。Cloud Service Mesh 主動更新會遵循 Pod 中斷預算。

  • 低優先順序的主動更新會與 GKE 維護時段重疊。
  • Cloud Service Mesh 為叢集提供高優先順序的主動更新後,系統會立即執行,不受 GKE 維護期間限制。高優先順序的主動更新通常至少有一個相關聯的 CVE。

如果您不想自行管理 Cloud Service Mesh 資料層的生命週期,且工作負載可容許 Pod 隨時遭到替換,請啟用代管資料層。

如要完全控管所有 Cloud Service Mesh 資料層更新的時間,請停用代管資料層。

系統預設「不會」傳送維護作業通知。詳情請參閱本文的「啟用代管資料層的維護通知」一節。

限制

代管資料層不會管理下列項目:

  • 未插入的 Pod
  • 手動插入的 Pod
  • 工作
  • StatefulSets
  • DaemonSets

如果您已在舊版叢集上佈建代管 Cloud Service Mesh,可以為整個叢集啟用資料層管理功能:

kubectl annotate --overwrite controlplanerevision -n istio-system \
REVISION_LABEL \
mesh.cloud.google.com/proxy='{"managed":"true"}'

或者,您也可以使用相同註解,選擇性地為特定命名空間或 Pod 啟用代管資料層。如果您選擇性地控制個別元件,則優先順序為控制層修訂版本、命名空間,然後是 Pod。

服務最多可能需要十分鐘,才能管理叢集中的 Proxy。執行下列指令來檢查狀態:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

預期的輸出內容:

membershipStates:
  projects/PROJECT_NUMBER/locations/global/memberships/CLUSTER_NAME:
    servicemesh:
      dataPlaneManagement:
        details:
        - code: OK
          details: Service is running.
        state: ACTIVE
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed-rapid.'

如果服務未在十分鐘內準備就緒,請參閱「代管資料層狀態」一文,瞭解後續步驟。

停用代管資料層 (選用)

如果您是在新叢集上佈建代管 Cloud Service Mesh,可以完全停用代管資料層,或針對個別命名空間或 Pod 停用。如果現有叢集的代管資料層預設或手動停用,則會繼續停用。

如要在叢集層級停用代管資料層,並改回自行管理 Sidecar Proxy,請找出所有 controlplanerevision,然後變更各項註解。

  1. 找出所有控制層修訂版本:

    kubectl get controlplanerevisions -n istio-system
    
  2. 變更備註:

    kubectl annotate --overwrite controlplanerevision CONTROL_PLANE_REVISION_NAME -n istio-system mesh.cloud.google.com/proxy='{"managed":"false"}'
    

    針對每個控制層修訂版本重複這個步驟。

    將 CONTROL_PLANE_REVISION_NAME 替換為前一個指令的輸出內容。

    如要停用命名空間的代管資料層,請按照下列步驟操作:

    kubectl annotate --overwrite namespace NAMESPACE \
     mesh.cloud.google.com/proxy='{"managed":"false"}'
    

    如要停用 Pod 的代管資料層,請按照下列步驟操作:

    kubectl annotate --overwrite pod POD_NAME \
     mesh.cloud.google.com/proxy='{"managed":"false"}'
    

為代管資料層啟用維護期間

如果您已設定 GKE 維護期間,系統會在下一個可用的維護期間開始時,啟動升級作業,並持續進行,直到所有代管 Pod 都更新完畢為止 (通常需要 12 小時)。CVE 相關推出作業不會遵循維護期間。

Cloud Service Mesh 會使用 GKE 維護期間,與 GKE 保持一致。

啟用代管資料層的維護通知

您可以要求在排定的維護期間內,提前一週收到即將進行的代管資料層維護通知。系統預設不會傳送維護通知。您也必須設定 GKE 維護期間,才能接收通知。啟用後,系統會在升級作業前至少兩天傳送通知。

如要選擇加入代管資料層維護通知,請按照下列步驟操作:

  1. 前往「通訊」頁面。

    前往「通訊」頁面

  2. 在「Cloud Service Mesh Upgrade」(Cloud Service Mesh 升級) 列的「Email」(電子郵件) 欄下方,選取圓形按鈕,將維護通知設為「ON」(開啟)。

每位想接收通知的使用者都必須個別選擇加入。如要為這些通知設定電子郵件篩選器,主旨行如下:

Upcoming upgrade for your Cloud Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME"。

以下範例顯示典型的代管資料層維護通知:

主旨:Cloud Service Mesh 叢集「<location/cluster-name>」即將升級

Cloud Service Mesh 使用者,您好:

叢集 ${instance_id} (https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) 中的 Cloud Service Mesh 元件已排定於 ${scheduled_date_human_readable} ${scheduled_time_human_readable} 升級。

如要瞭解本次更新內容,可以查看版本資訊 (https://cloud.google.com/service-mesh/docs/release-notes)。

如果這項維護作業取消,您會收到另一封電子郵件。

祝一切順心!

Cloud Service Mesh 團隊敬上

(c) 2023 Google LLC 1600 Amphitheater Parkway, Mountain View, CA 94043, USA Google Cloud Platform 或您的帳戶有重大變更,特此發送這則公告通知您。 如要停止接收維護期間通知,可至下列網址編輯使用者偏好設定: https://console.cloud.google.com/user-preferences/communication?project=${project_id}