代管控制層現代化

<0x0

您必須在支援期限結束前,將 Cloud Service Mesh 叢集從已淘汰的 ISTIOD 控制層實作方式,更新為 TRAFFIC_DIRECTOR 實作方式。您可以自行安排時間啟動現代化程序,也可以在貴機構符合資格後,讓 Google 自動安排時間。

現代化路徑有兩種,您也可以混搭使用:

  • 客戶觸發的現代化 (自助式):您可以使用 Google Cloud CLI 自行啟動及控管機群現代化的確切時間,不受 Google 驅動的排程影響。
  • Google 驅動的現代化 (預設):Google 會評估機群相容性,並根據維護期間和提前告知,自動安排機構的現代化程序。Google 會等待貴機構中的所有機群都相容,因此只要有一個機群不相容,就會阻礙現代化程序。

無論選擇哪種路徑,您都需要完成下列核心步驟,才能將控制平面現代化:

  1. 檢查相容性:啟用相容性檢查,瞭解車隊是否與現代化相容。
  2. 規劃及設定現代化程序:選擇路徑、設定叢集和機群推出順序,或延後特定機群。
  3. 修正相容性落差:請先確保車隊符合所有相容性規定,再啟動現代化程序。
  4. 啟動現代化程序:依排程觸發客戶啟動的現代化程序,或等待 Google 啟動排程。
  5. 進行中的叢集現代化:在設定的維護期間,雙重控制層會並行運作,部署作業 (工作負載和閘道) 會自動轉換至新的控制層。您必須手動重新啟動 StatefulSet 和 DaemonSet 工作負載。
  6. 監控狀態、浸潤和完成:監控狀況進度、解決任何停滯問題、在浸潤期間 (至少 6 個工作天) 觀察工作負載,並在完成機群層級作業前,提供完整的回復支援。

檢查車隊相容性並解決缺口

無論是客戶觸發或 Google 驅動的現代化程序,機群都必須先通過相容性驗證,才能進行現代化。您必須啟用相容性報告,才能檢查潛在的阻礙條件並修正設定落差。詳情請參閱「瞭解 Cloud Service Mesh 相容性」。

  • Google 驅動的現代化:Google 只會為所有非延遲車隊都相容的機構排定時程。
  • 客戶觸發的現代化:您必須先驗證目標機群報告 MODERNIZATION_COMPATIBLE,才能啟動現代化程序。

相容性檢查會評估機群的 Istio CRD 設定、Pod 註解、基礎架構依附元件 (例如 Workload Identity) 和規模參數。

處理不支援的功能

為配合ISTIOD控制層淘汰作業, Google Cloud 將停止支援與TRAFFIC_DIRECTOR控制層實作項目不相容的功能。請參閱 API 支援詳細資料。

如果您使用不支援的功能,請務必在支援服務終止前採取下列任一行動 (請參閱「淘汰」一節):

  • 重構設定 (建議):移除不支援的欄位,或替換成支援的 Cloud Service Mesh 替代方案,讓機群回報 MODERNIZATION_COMPATIBLE,然後改用 TRAFFIC_DIRECTOR 控制層實作。
  • 遷移至開放原始碼 (OSS) Istio:如果工作負載嚴格要求的功能,是採用 TRAFFIC_DIRECTOR 的代管 Cloud Service Mesh 不支援的功能,您就無法將這些叢集現代化為 TRAFFIC_DIRECTOR。您必須將這些工作負載遷移至自行管理的開放原始碼 Istio。
  • 解除安裝 Cloud Service Mesh:您可以解除安裝代管 Cloud Service Mesh。

規劃及設定現代化作業

制定機群翻新計畫。如果您未執行這項操作,系統會以預設方式套用 Google 驅動的現代化程序。您必須採取行動,確保先翻新非正式版機群,最後再翻新重要機群。此外,在整個機構中,所有未延遲的機群都相容之前,Google 驅動的現代化作業不會排定機構的現代化作業,因此現代化作業可能會因本機不相容而遭到封鎖。

開始進行現代化作業前,請先查看選項,並在貴機構的機群和叢集中設定推出設定。

可用的路徑

做法 說明 適用情境 範圍 必要條件 提前告知 復原功能
客戶觸發的現代化 您可以按照自己的排程,逐一啟動機群的現代化程序。 精細控管機群現代化時間 (您可以決定何時在機群層級啟動及復原)。運用現有的應用程式監控功能,在需要復原時發出警示。 逐一車隊 (FLEET_PROJECT_ID)。 目標機群必須與現代化功能相容。 不適用。 使用 Google Cloud CLI 立即自助式復原。
Google 主導的現代化 (預設) Google 會自動安排整個機構的現代化程序。 組織中所有機群都相容後,系統就會自動進行現代化。 整個 Google Cloud 機構 (所有非延遲機群)。 機構中的所有非延遲車隊都必須與現代化功能相容。 開始前 14 天以上發送機群通知,開始前 24 小時以上發送叢集通知。 如果標準化監控顯示錯誤,Google 就會復原。如果應用程式監控功能顯示錯誤,請與 Cloud Customer Care 團隊聯絡。

管理整個機構的多個車隊

如果貴 Google Cloud 機構管理多個車隊,不必為所有車隊選擇單一方法。您可以結合使用多種策略,例如:

  • 延後處理複雜或重要的車隊:使用 --modernization-strategy deferred 將特定車隊固定至舊版實作項目,以便在修正依附元件或規劃客戶觸發的執行作業時,將這些車隊排除在 Google 驅動的排程之外。
  • 首先,針對選定的車隊啟動客戶觸發的現代化程序:先針對測試、開發或評估車隊進行現代化,以便在自己的時間軸上驗證行為。
  • 允許 Google 繼續更新其餘車隊:所有相容且未延遲的車隊仍會選擇由 Google 驅動的排程。

延後機群現代化 (選擇停用)

如要讓個別機群退出 Google 驅動的現代化程序,請將機群的策略設為 DEFERRED:

gcloud alpha container fleet mesh update \
  --modernization-strategy deferred \
  --project FLEET_PROJECT_ID

將 FLEET_PROJECT_ID 替換為機群主機專案的 ID。

建議使用設定 --modernization-strategy deferred,以便:

  • 從 Google 驅動的排程中排除特定車隊,因為您打算使用客戶觸發的現代化功能,在自己的時間軸上進行現代化。
  • 暫緩複雜或重要車隊的現代化作業,同時修正依附元件,讓貴機構中其他相容的車隊繼續進行 Google 驅動的排程。

請注意,系統仍會採用舊版專案標籤 mesh-modernization-mode=manual,但建議使用 --modernization-strategy deferred。貴機構中其他未延遲的車隊,在全數相容後,仍符合 Google 驅動排程的資格。

設定推出作業順序

您可以使用 mesh-modernization-order 標籤 (early、default 或 late),控管叢集和車隊的依序推出順序。

叢集推出順序 (適用於兩種路徑)

如果機群包含多個叢集,您可以為每個叢集套用 mesh-modernization-order 標籤,控管叢集現代化的順序。當您或 Google 觸發車隊現代化作業時,系統會依序現代化每個叢集群組,等待目前群組完成自動現代化步驟,再開始下一個群組:

gcloud container clusters update CLUSTER_NAME \
  --location LOCATION \
  --update-labels="mesh-modernization-order=VALUE"

將 CLUSTER_NAME 替換為叢集名稱,LOCATION 替換為叢集位置,VALUE 則替換為下列其中一個值:

  • early:叢集在第一波現代化作業中完成現代化。
  • default:叢集會在第二波翻新作業中完成翻新。
  • late:叢集會在第三波也是最後一波現代化作業中完成現代化。

機群推出順序 (僅限 Google 驅動)

如果貴機構有多個機群正在進行 Google 驅動的現代化作業,您可以為機群主專案設定專案層級標籤,控管 Google 現代化機群的順序:

gcloud alpha projects update FLEET_PROJECT_ID \
  --update-labels="mesh-modernization-order=VALUE"

將 FLEET_PROJECT_ID 替換為機群主專案的 ID,並將 VALUE 替換為下列其中一個值:

  • early:在第一波現代化作業中,機群已完成現代化。
  • default:在第二波次翻新作業中,機群已完成翻新。
  • late:在第三波也是最後一波的現代化作業中,機群已完成現代化。

Google 會先完成每個機群層級的現代化作業,再開始下一個層級,順序為早期、預設 (和未標記)、後期。標示為延遲的車隊不會納入這項訂單。

舉例來說,您可以將非正式版機群設為 early,將特別重要的機群設為 late,其餘則保留預設值。

如果您未使用 Google Cloud 機構,車隊就會獨立排程及更新,您也無法控制順序。

由客戶觸發的現代化程序 (自助式)

客戶觸發的現代化作業可讓您直接控管個別機群的現代化作業啟動時間。

觸發機群現代化程序

目標機群回報 MODERNIZATION_COMPATIBLE後,請使用下列指令觸發現代化程序:

gcloud alpha container fleet mesh update \
  --modernization-strategy automatic \
  --project FLEET_PROJECT_ID

將 FLEET_PROJECT_ID 替換為機群主機專案的 ID。

  • 維護期間:Google 會遵守設定的叢集維護期間和排除時段。叢集會在下一個開放維護期間開始現代化。
  • 叢集排序:如果您在叢集上設定 mesh-modernization-order 標籤,Google 會按照該順序排序。

監控進度

請按照「檢查現代化狀態」一文的指示,監控機群和叢集現代化的進度。監控應用程式,判斷是否需要回溯,尤其是在 MODERNIZATION_PREPARING 和 MODERNIZATION_MIGRATING_WORKLOADS 狀態期間。

還原顧客觸發的現代化程序

如果在叢集現代化作業進行中,或機群浸泡期 (機群層級最終確認前) 偵測到問題,可以立即觸發復原:

gcloud alpha container fleet mesh update \
  --modernization-strategy deferred \
  --project FLEET_PROJECT_ID

將 FLEET_PROJECT_ID 替換為機群主機專案的 ID。

這樣一來,機群就會處於延遲狀態,也就是不會納入 Google 驅動的現代化程序。準備好重試現代化作業時,請重新執行指令,觸發機群現代化作業。

Google 主導的現代化 (自動預設)

如果您未啟動客戶觸發的現代化程序,Google 會自動管理貴機構的現代化程序。

全機構排程

Google 會持續監控車隊,貴機構中所有啟用網狀網路的車隊 (不含任何延遲車隊) 都與現代化相容後,Google 就會安排貴機構進行現代化。

提前通知和排程

Google 會在開始現代化程序前,提供兩層級的預先通知:

車隊層級通知

首先,當車隊符合現代化升級條件,並選定在未來由 Google 進行現代化升級時,您會收到通知。

  • 通知發出後,最快在下個月的第一個美國工作日後 14 天,即可開始叢集現代化作業。舉例來說,如果 Google 判定貴機構已準備就緒,我們會在 2027 年 1 月 31 日前通知您,最早可於 2027 年 2 月 15 日開始進行現代化升級。

  • 系統會同時通知貴機構中的每個車隊 (不包括您已延期的車隊)。這項通知會顯示在機群層級的功能狀態條件中 (MODERNIZATION_WILL_BE_SCHEDULED)。

叢集層級通知

在叢集現代化作業開始前至少 1 天 (24 小時),您會收到叢集層級的通知,瞭解該叢集由 Google 執行的現代化作業預計開始日期。

繼機群層級通知之後,這項功能可讓您更精確地掌握個別叢集的現代化時間。這項通知會顯示在叢集層級的功能狀態條件 (MODERNIZATION_SCHEDULED) 中。

要求還原 Google 驅動的現代化作業

如果在使用 Google 驅動的現代化機群進行現代化或浸潤期間發生問題,請與 Cloud Customer Care 團隊聯絡,要求復原。

主動式現代化期間會發生的情況

本節說明主動式機群和叢集現代化期間會發生的情況。

翻新機群

對於每個進行現代化的機群 (無論是由 Google 驅動或客戶觸發),我們會根據排序 (早期 → 預設 → 晚期),為所有叢集啟用新的控制層實作。

為所有叢集啟用控制層後,我們會根據排序 (早期 → 預設 → 晚期),將所有叢集的流量轉移至新的控制層實作項目。

如要查看目前狀態,請參閱「檢查車隊現代化狀態」。

機群過渡期

所有叢集的流量轉移完成後,機群會進入浸潤期。所有叢集完成現代化後,機群會繼續處於浸泡期 (MODERNIZATION_MODERNIZED),至少 6 個工作天後才會轉換為 MODERNIZATION_FINALIZED。在整個浸潤期內,系統會保留完整的回復功能。完成現代化程序後,就無法再復原,且 ISTIOD 元件可能會取消佈建。

更新叢集

在叢集現代化作業進行期間,兩種控制層實作方式會暫時並行運作,並以安全且受控的方式處理下列工作:

  1. 啟用新的控制層實作方式。如果您為叢集設定維護期間,這個步驟會在維護期間開始,並持續到完成為止。請注意下列詳細資料:
  2. 將流量轉移至新的控制層實作項目。如果您為叢集設定維護期間,這個步驟會在維護期間開始,並持續到完成為止。請注意下列詳細資料:
    • Kubernetes Deployment 管理的 Pod (含有 Cloud Service Mesh Proxy) 會重新啟動,以便重新連線至新的控制層。
    • Pod 會以漸增的波次重新啟動,每個波次後都會有浸泡時間,方便監控。
  3. 非部署作業的手動工作負載重新啟動 (需要客戶採取行動)。

    • Google 會自動重新啟動 Kubernetes Deployments 管理的工作負載。 由其他 Kubernetes 資源類型 (例如 StatefulSet 和 DaemonSet) 管理的工作負載,必須手動重新啟動。
    • 叢集狀態回報 MODERNIZATION_COMPLETED 後 (即叢集處於浸泡期時),請重新啟動這些工作負載。
    • 您必須在完成機群現代化程序前重新啟動這些工作負載,否則這些 Proxy 會繼續連線至預計要取消佈建的舊版 Istiod 控制層。
    • 使用標準 Kubernetes 方法 (例如 kubectl rollout restart ...) 重新啟動工作負載
  4. 叢集中的所有工作負載完成轉換後,叢集會等待機群浸泡期。

如要監控叢集的有效現代化狀態,請參閱「檢查現代化狀態」。

查看現代化狀態並採取行動

您可以使用 Google Cloud CLI 監控機群和叢集的現代化進度:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

將 FLEET_PROJECT_ID 替換為機群主機專案的 ID。

輸出內容大致如下:

  membershipStates:
    projects/123456789/locations/global/memberships/cluster-1:
      servicemesh:
        conditions:
        - code: MODERNIZATION_MIGRATING_WORKLOADS
          documentationLink: https://cloud.google.com/service-mesh/docs/...
          severity: INFO
  state:
    servicemesh:
      conditions:
      - code: MODERNIZATION_MODERNIZING
        documentationLink: https://cloud.google.com/service-mesh/docs/...
        severity: INFO

現代化狀態會顯示在state.servicemesh.conditions (機群層級) 和membershipStates.<MEMBERSHIP_NAME>.servicemesh.conditions (叢集層級) 欄位中:

成功完成機群現代化的狀態

成功完成機群現代化後,機群的狀態會從 MODERNIZATION_MODERNIZING 開始。

每個叢集隨後會經歷下列狀態:

  • MODERNIZATION_SCHEDULED
  • MODERNIZATION_PREPARING
  • MODERNIZATION_PREPARED
  • MODERNIZATION_MIGRATING_WORKLOADS
  • MODERNIZATION_COMPLETED

機群中的所有叢集完成現代化後,機群會經歷下列狀態:

  • MODERNIZATION_MODERNIZED
  • MODERNIZATION_FINALIZED

復原

Google 驅動的現代化程序會在整個現代化過程中,監控部署準備情況和健康狀態,並在偵測到問題時自動觸發回溯。如果發現問題,請與 Cloud Customer Care 聯絡,要求復原。

如果是客戶觸發的現代化程序,您隨時可以觸發回溯。

回溯期間,機群會顯示 MODERNIZATION_ROLLING_BACK_FLEET 狀態,叢集則會顯示 MODERNIZATION_ROLLING_BACK_CLUSTER 狀態。

叢集回溯完成後,狀態會暫時顯示為 MODERNIZATION_ABORTED。

處理錯誤和停滯 (僅限客戶觸發)

在客戶觸發的現代化程序中,如果叢集發生問題而無法繼續進行,狀態會轉換為 MODERNIZATION_STALLED。如果是客戶觸發的現代化程序,Google 不會觸發回溯。您必須對問題進行分類,並決定要修正轉送還是觸發復原。

如果叢集回報 MODERNIZATION_STALLED,請檢查條件詳細資料,取得相關錯誤部分的直接連結:

可採取行動的錯誤

如果偵測到不相容的網格或叢集設定,我們會停止現代化程序。請確保已啟用相容性報告,並如「瞭解 Cloud Service Mesh 相容性」一文所述,檢查機群和叢集層級的條件是否有落差。

  • 立即重試:解決阻礙後,我們會立即偵測到變更,並立即繼續進行現代化作業,不必等待下一個維護期間。

內部錯誤

Google 工程師會審查 Google 內部服務問題,並盡可能恢復現代化程序。請注意,現代化作業可能會在維護期間外繼續進行,就像使用者可採取行動的錯誤一樣。如要避免這種情況,可以觸發復原。

如果現代化程序停滯超過 24 小時,且沒有相容性落差,請聯絡 Cloud 客戶服務團隊瞭解詳情,或在生產工作負載受到影響時觸發回溯。

機群層級條件參考資料

條件 說明
MODERNIZATION_COMPATIBLE 機群與新的控制層實作項目相容。
MODERNIZATION_WILL_BE_SCHEDULED Google 驅動的現代化:機構中的所有非延遲艦隊都相容,且已排定時間。
MODERNIZATION_MODERNIZING 機群中有一或多個叢集正在進行現代化作業。
MODERNIZATION_MODERNIZED 所有叢集都已完成主動式現代化。機群處於浸泡期。
MODERNIZATION_FINALIZED 現代化程序已完成並定案。系統會移除舊版 Istiod 元件。無法再復原。
MODERNIZATION_ROLLING_BACK_FLEET 正在進行車隊層級的回復作業。

叢集層級條件參照

條件 說明
MODERNIZATION_SCHEDULED 叢集預計在條件中指定的日期當天或之後進行現代化。如果叢集已設定維護期間/排除時段,系統會顯示目標維護期間的日期。
MODERNIZATION_PREPARING 啟用新的控制層實作方式。
MODERNIZATION_PREPARED 已啟用新的控制層實作方式。尚未開始遷移工作負載。
MODERNIZATION_MIGRATING_WORKLOADS 叢集正積極將工作負載遷移至新的控制層實作項目。
MODERNIZATION_COMPLETED 叢集已完成現代化,目前處於浸泡期。
MODERNIZATION_STALLED 發生錯誤,導致現代化程序停滯 (僅限客戶觸發)。請查看條件詳細資料並設法解決問題。
MODERNIZATION_ROLLING_BACK_CLUSTER 叢集正在復原。
MODERNIZATION_ABORTED 叢集已還原為舊版控制層。回報後短時間內。