代管資料層

本頁說明如何管理代管 Cloud Service Mesh 的資料層。

如果您使用代管 Cloud Service Mesh,Google 會全面管理 Proxy 升級作業。

啟用受管理資料層功能後,系統會與受管理控制層一併主動自動更新 Sidecar Proxy 和注入的閘道,方法是重新啟動工作負載,重新注入新版 Proxy。這項作業會在控制層升級後開始,通常會在開始後 2 週內完成。

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

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

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

部署新版 Cloud Service Mesh 資料平面時

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

1 Cloud Service Mesh 主動更新會自動取代工作負載中的 Pods,但 StatefulSetsJobsDaemonSets 和手動插入的 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. 前往「Communication」(通訊) 頁面。

    前往「Communication」(通訊) 頁面

  2. 在「Cloud Service Mesh Upgrade」列的「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} 編輯使用者偏好設定。