代管控制層現代化
總覽
Google 會逐步更新現有車隊,將原本使用的ISTIOD控管型控制層實作方式,改為使用TRAFFIC_DIRECTOR實作方式。Google 預設會自動遷移車隊,但您也可以選擇自行遷移。如要查看車隊使用的控制層,請參閱「檢查控制層實作」。
準備翻新機群時,請考量下列事項:
如要準備進行現代化作業,您可以透過兩種方式控管程序:
Google 驅動的自動遷移 (預設) - 您可以按照「Google 驅動的現代化」一文中的操作說明,自訂叢集現代化的順序。
由客戶主導的遷移作業 (選用) - 您可以選擇自行進行車隊現代化作業,並按照「由客戶主導的現代化作業」一文中的操作說明標記車隊。
預設為 Google 驅動的現代化。選擇這個選項後,Google 會判斷機群何時適合進行現代化。Google 會安排車隊進行現代化升級,並在開始程序前通知您。
更新叢集時,系統會重新啟動有 Proxy 的工作負載。如果遵循 Kubernetes 最佳做法,應該不會造成停機。此外,如果您已設定維護期間,Google 會在該期間觸發現代化作業。開始後,系統會執行至完成,並在標示為最終版本前,額外進行 6 天的浸泡測試。如果監控功能偵測到問題,您可以要求復原。
如果是客戶主導的現代化,Google 會在機群準備好現代化時通知您。然後選擇要觸發現代化作業的時間,以叢集為單位。完成後,請將各項機群現代化作業標示為完成。
機群完成現代化後,Google 會移除所有以 Istiod 為基礎的元件。
如要實作
TRAFFIC_DIRECTOR控制層,叢集必須註冊至已啟用網格功能的機群。如果您是使用舊版工具加入,Google 會使用gkehub.googleapis.comMembership API,自動將叢集註冊到專案的 Fleet。如果您有任何會取消註冊叢集的自動化程序,請務必在現代化前移除。
Google 驅動的現代化
如果您未標記車隊以進行客戶主導的現代化作業,系統會預設採用這個選項。Google 會監控車隊,判斷何時可安全地進行現代化升級。當機構中所有支援網狀架構的車隊都準備就緒後,系統就會安排機構進行現代化升級。
多個車隊
如果貴機構有多個車隊,且都採用受管理 Cloud Service Mesh,您可以設定專案標籤 mesh-modernization-order 為 early、default 或 late,控管 Google 升級車隊的順序。Google 會先完成每個群組的現代化作業,再開始下一個群組中任何車隊的現代化作業。已選擇由客戶主導現代化的車隊不會納入這項排序。
使用下列指令為車隊設定 mesh-modernization-order 標籤:
gcloud alpha projects update FLEET_PROJECT_ID --update-labels="mesh-modernization-order=VALUE"
如要瞭解如何使用控制台或 REST 設定專案標籤,請參閱建立及管理標籤文件。
如果您未使用 Google Cloud 機構,車隊就會獨立排程及更新,且您無法控制順序。
多叢集網格
如果機群有多個叢集使用受管理 Cloud Service Mesh,您可以將叢集的 mesh-modernization-order 叢集標籤設為 early、default 或 late,控制 Google 升級叢集的順序。Google 會開始更新每個群組,並等待自動更新步驟完成,再開始更新下一個群組中的任何叢集。請注意,這項排序方式只會套用至車隊,不會影響貴機構中可能同時進行現代化的其他車隊。
使用下列指令為叢集設定 mesh-modernization-order 標籤:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --update-labels="mesh-modernization-order=VALUE"
通知和排程
本節說明如何接收車隊和叢集即將進行現代化的通知。
即將安排現代化升級的通知
首先,如果車隊已選定在未來幾週內進行 Google 驅動的現代化升級,您會收到通知。
我們會在每月第一個美國工作日之前發出通知。 叢集現代化作業最早可於每月第一個美國工作日後的 14 天開始,Google 會盡力在下一個日曆月結束前,為貴機構啟動第一個叢集現代化作業。舉例來說,您會在 2025 年 4 月 1 日前收到通知,叢集現代化作業可能會在 2025 年 4 月 15 日開始,而您的第一個叢集現代化作業應在 2025 年 5 月 31 日前開始。
系統會同時通知貴機構中的每個車隊 (不包括您選擇由客戶主導現代化的車隊)。
這項通知會顯示在機群層級的功能狀態條件中。使用下列 Google Cloud CLI 指令檢查通知:
gcloud alpha container fleet mesh describe --project $FLEET_PROJ
排定車隊時間後,您會看到類似下列的 code: MODERNIZATION_WILL_BE_SCHEDULED 和 details 條件:
state:
servicemesh:
conditions:
- code: MODERNIZATION_WILL_BE_SCHEDULED
details: We will soon schedule clusters in this fleet to be modernized to use the TRAFFIC_DIRECTOR
control plane implementation. Please confirm your fleet and cluster preferences prior to
scheduling. Cluster modernization dates will be on or after 2025-03-17.
documentation_link: ...
severity: INFO
叢集層級通知:排定現代化作業
在叢集層級,您會在叢集現代化作業開始前至少 1 天,收到 Google 驅動的叢集現代化作業預估開始日期通知。
繼機群層級通知之後,這項功能可提供更精確的個別叢集現代化時間。
通知會顯示在叢集層級的功能狀態條件中。使用下列 Google Cloud CLI 指令檢查通知:
gcloud container hub mesh describe --project=PROJECT_ID
您會看到類似下列的結果:
membershipStates:
projects/656460026795/locations/us-central1/memberships/cluster:
servicemesh:
conditions:
- code: MODERNIZATION_SCHEDULED
details: This cluster has been scheduled for modernization on or after 2025-03-17.
documentationLink: ...
severity: INFO
主動進行現代化,以利 Google 驅動的遷移作業
本節說明 Google 驅動的現代化程序步驟。
翻新機群
Google 會為貴機構的每項車隊觸發主動式現代化程序。 也就是說,系統會針對每個車隊執行下列步驟:
- 使用
early的mesh-modernization-order,將所有叢集升級為最新版本。 - 使用
mesh-modernization-orderdefault或未指定,將所有叢集現代化。 - 使用
late的mesh-modernization-order,將所有叢集升級為最新版本。 - 等待每個叢集的現代化作業標示為完成。也就是說,您必須等待至少 6 個工作天,才能重新啟動這個機群中任何叢集的最後一個 Pod。
- 完成機群現代化作業,最終移除以 Istiod 為基礎的元件。
更新叢集
在叢集現代化作業進行期間,兩種控制層實作方式會暫時並行運作,並以安全受控的方式處理下列工作:
- 啟用新的控制層實作方式。如果您為叢集設定維護期間,並使用 Google 驅動的現代化功能,這個步驟會在維護期間開始,並持續進行直到完成。
- 如要啟用健康狀態檢查,請在叢集的
kube-system命名空間中建立snkdaemonset,並建立每個叢集的防火牆規則。- 如要啟用網路端點群組 (NEG) 擷取功能,請將
cloud.google.com/neg註解新增至所有 Kubernetes 服務。 - 系統會在叢集中建立新的 Google Cloud 資源,例如網格、路徑、後端服務和健康狀態檢查。
- 部分新資源設有配額限制。您可以查看配額,並視需要申請增加配額。
- 在進入下一個步驟前,我們會先在浸泡時間內監控叢集。
- 如要啟用網路端點群組 (NEG) 擷取功能,請將
- 如要啟用健康狀態檢查,請在叢集的
- 將流量轉移至新的控制層實作。如果您已為叢集設定維護期間,且使用 Google 驅動的現代化功能,這個步驟會在維護期間開始,並持續進行直到完成。
- Kubernetes Deployment 管理的 Pod (含有 Cloud Service Mesh Proxy) 會重新啟動,因此會重新連線至新的控制層。
- Pod 會以越來越大的波次重新啟動,每個波次後都有浸泡時間,方便監控。
- 叢集現代化作業完成後,至少需要 6 個工作天的浸泡時間,才會標示為最終狀態。
使用下列 Google Cloud CLI 指令,檢查現行現代化作業的狀態:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
您會在每個叢集的 membershipStates 欄位中看到下列其中一種情況:
...
membershipStates:
projects/FLEET_PROJ/locations/us-central1/memberships/MEMBERSHIP:
servicemesh:
conditions:
- code: MODERNIZATION_IN_PROGRESS
details: ...
documentationLink: ...
severity: INFO
...
# If you see this, see instructions provided in the details and documentationLink fields.
- code: MODERNIZATION_ACTION_REQUIRED
details: [details about required actions]
documentationLink: [link to documentation for required actions]
severity: WARNING
...
- code: MODERNIZATION_COMPLETED
details: ...
documentationLink: ...
severity: INFO
以客戶為導向的現代化
您可以選擇在車隊層級自行控管確切的現代化時間。如要這麼做,請使用下列指令,在機群主機專案中套用標籤:
gcloud alpha projects update FLEET_PROJECT_ID \ --update-labels="mesh-modernization-mode=manual"
請注意,如果貴機構有多個車隊,系統會為任何未標示的車隊安排 Google 驅動的現代化升級。 Google Cloud
機群符合現代化資格後,您會在機群層級功能狀態中收到通知。您必須在收到這則通知後的 3 個月內,觸發現代化程序。
請參閱下列必要設定最佳做法,為叢集現代化做好準備。訂閱 Cloud Service Mesh 版本資訊動態消息,即可收到通知。