代管控制層現代化
您可以按照自己的時間表,將 Cloud Service Mesh 叢集從 ISTIOD 控制層實作升級至 TRAFFIC_DIRECTOR 實作,也可以讓 Google 自動安排升級時間。
現代化途徑有兩種,您也可以混用:
- 客戶觸發的現代化 (自助式):您可以使用 Google Cloud CLI 自行啟動及控管機群現代化的確切時間,不受 Google 驅動的排程影響。
- Google 驅動的現代化 (預設):Google 會評估機群相容性,並根據維護期間和提前告知,自動安排機構的現代化程序。Google 會等待貴機構的所有機群都相容,因此只要有單一機群不相容,就會阻礙現代化程序。
無論選擇哪種路徑,您都需要完成下列核心步驟,才能將控制平面現代化:
- 檢查相容性:啟用相容性檢查,瞭解車隊是否與現代化相容。
- 規劃及設定現代化程序:選擇路徑、設定叢集和機群推出順序,或延後特定機群。
- 彌補相容性差距:請先確保車隊符合所有相容性規定,再啟動現代化程序。
- 啟動現代化程序:在排定的時間觸發客戶啟動的現代化程序,或等待 Google 安排時間。
- 叢集現代化作業進行中:在設定的維護期間,雙控制層會並行運作,部署項目 (工作負載和閘道) 會自動轉換至新控制層。您需要手動重新啟動 StatefulSet 和 DaemonSet 工作負載。
- 監控狀態、浸潤和完成:監控條件進度、解決任何停滯問題、在浸潤期間 (至少 6 個工作天) 觀察工作負載,並在完成機群層級作業前,提供完整的回復支援。
檢查車隊相容性並修正缺口
無論是客戶觸發或 Google 驅動的現代化程序,機群都必須先通過相容性驗證,才能進行現代化。建議您啟用相容性報告,檢查潛在的阻礙條件並修正設定缺口。詳情請參閱「瞭解 Cloud Service Mesh 相容性」。
- Google 驅動的現代化:Google 只會為所有非延遲車隊都相容的機構排定時程。
- 客戶觸發的現代化:您必須先驗證目標車隊報告
MODERNIZATION_COMPATIBLE,再啟動現代化程序。
相容性檢查會評估機群的 Istio CRD 設定、Pod 註解、基礎架構依附元件 (例如 Workload Identity) 和規模參數。
規劃及設定現代化作業
規劃如何翻新車隊。如果您未執行這項操作,系統會以預設方式套用 Google 驅動的現代化程序。您必須採取行動,確保先翻新非正式環境機群,最後再翻新重要機群。此外,Google 驅動的現代化作業會等到整個機構中 100% 的非延遲機群都相容後,才會排定機構的現代化作業,因此現代化作業可能會因本機不相容而遭到封鎖。
啟動現代化程序前,請先檢查選項,並在貴機構的機群和叢集中設定推出設定。
可用的路徑
| 做法 | 說明 | 適用情境 | 範圍 | 必要條件 | 提前告知 | 復原功能 |
|---|---|---|---|---|---|---|
| 客戶觸發的現代化 | 您可以按照自己的時間表,逐一啟動機群的現代化程序。 | 精細控管車隊現代化時間 (您可以決定在車隊層級啟動和回溯的時間)。運用現有的應用程式監控功能,在需要復原時發出警示。 | 逐一機群 (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。
請注意,系統仍會採用舊版專案標籤 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 會按照該順序排序。
監控進度
請按照「檢查現代化狀態」一文的指示操作,監控機群和叢集現代化的進度。
復原客戶觸發的現代化程序
如果在叢集現代化作業進行中,或機群浸潤期 (機群層級最終確認前) 偵測到問題,可以立即觸發回溯:
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 月 10 日準備就緒,我們會在 2027 年 1 月 31 日前通知您,最早可於 2027 年 2 月 15 日開始進行現代化升級。
系統會同時通知貴機構中的每個車隊 (您已延期的車隊除外)。這項通知會顯示在機群層級的功能狀態條件 (
MODERNIZATION_WILL_BE_SCHEDULED) 中。
叢集層級通知
在叢集層級,您會收到叢集預估的 Google 驅動式現代化作業開始日期通知,且至少會在叢集現代化作業開始前 1 天 (24 小時) 收到通知。
繼機群層級通知之後,這項功能可提供更精確的個別叢集現代化時間。這項通知會顯示在叢集層級功能狀態條件 (MODERNIZATION_SCHEDULED) 中。
要求回溯 Google 驅動的現代化作業
如果在使用 Google 驅動的現代化機群進行現代化或浸潤期間發生問題,請與 Cloud Customer Care 團隊聯絡,要求復原。
主動式現代化期間會發生的情況
本節說明車隊和叢集進行現代化升級時會發生什麼情況。
更新車隊
對於每個進行現代化的機群 (無論是由 Google 驅動或客戶觸發),我們會根據排序 (早期 → 預設 → 晚期),為所有叢集啟用新的控制層實作。
為所有叢集啟用控制層後,我們會根據排序 (早期 → 預設 → 晚期),將所有叢集的流量轉移至新的控制層實作。
如要查看目前狀態,請參閱「查看車隊現代化狀態」。
機群過渡期
所有叢集的流量都轉移完畢後,機群就會進入浸泡期。所有叢集完成現代化程序後,機群會繼續處於過渡期 (MODERNIZATION_MODERNIZED),至少 6 個工作天,然後才會轉換為 MODERNIZATION_FINALIZED。在整個測試期間,完整復原功能都會保留。完成現代化程序後,就無法再復原,且 ISTIOD 元件可能會取消佈建。
叢集現代化
在叢集現代化作業進行期間,兩種控制層實作方式會暫時並行運作,並以安全受控的方式處理下列工作:
- 啟用新的控制層實作方式。如果您為叢集設定維護期間,這個步驟會在維護期間開始,並持續到完成為止。請注意下列詳細資料:
- 如要啟用健康狀態檢查,系統會在叢集的
kube-system命名空間中建立snkdaemonset,並建立每個叢集的防火牆規則。 - 如要啟用網路端點群組 (NEG) 擷取作業,請將
cloud.google.com/neg註解新增至所有 Kubernetes 服務。 - 系統會在叢集中建立 Google Cloud 新的資源,例如網格、路徑、後端服務和健康狀態檢查。
- 部分新資源設有配額限制。您可以查看配額,並視需要申請增加配額。
- 在進入下一個步驟前,我們會先在浸泡時間內監控叢集。
- 如要啟用健康狀態檢查,系統會在叢集的
- 將流量轉移至新的控制層實作。如果您為叢集設定維護期間,這個步驟會在維護期間開始,並持續到完成為止。請注意下列詳細資料:
- Kubernetes Deployment 管理的 Pod (含有 Cloud Service Mesh Proxy) 會重新啟動,因此會重新連線至新的控制層。
- Pod 會以越來越大的波次重新啟動,每個波次後都有浸泡時間,方便監控。
手動重新啟動非部署作業的工作負載 (客戶必須採取行動)。
- Google 會自動重新啟動 Kubernetes Deployments 管理的工作負載。由其他 Kubernetes 資源類型 (例如 StatefulSet 和 DaemonSet) 管理的工作負載,則必須手動重新啟動。
- 叢集狀態回報
MODERNIZATION_COMPLETED後 (也就是叢集處於浸泡期時),請重新啟動這些工作負載。 - 您必須在完成機群現代化作業前重新啟動這些工作負載,否則這些 Proxy 會繼續連線至預計要取消佈建的舊版 Istiod 控制層。
- 使用標準 Kubernetes 方法 (例如
kubectl rollout restart ...) 重新啟動工作負載
叢集中的所有工作負載完成轉換後,叢集會等待機群浸泡期。
如要監控叢集的現行現代化狀態,請參閱「查看現代化狀態」。
查看現代化狀態並採取行動
您可以使用 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_SCHEDULEDMODERNIZATION_PREPARINGMODERNIZATION_PREPAREDMODERNIZATION_MIGRATING_WORKLOADSMODERNIZATION_COMPLETED
機群中的所有叢集完成現代化後,機群會經歷下列狀態:
MODERNIZATION_MODERNIZEDMODERNIZATION_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 Customer Care 聯絡以瞭解詳情,或在生產工作負載受到影響時觸發復原。
機群層級條件參考資料
| 條件 | 說明 |
|---|---|
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 |
叢集已回溯至舊版控制層。回報時間較短。 |