本文說明如何將現有的 Google Kubernetes Engine (GKE) VPC 原生叢集從 Dataplane V1 遷移至 GKE Dataplane V2、監控遷移作業,以及視需要復原。
本文適用於平台管理員、操作員和網路專家,協助他們管理 GKE 叢集的網路設定。
開始之前,請參閱「關於遷移至 GKE Dataplane V2」,瞭解每個遷移階段會發生的情況,以及如何規劃工作負載中斷。
事前準備
啟動遷移作業前,請確認叢集符合資格規定,並考量對工作負載的影響。
確認叢集符合下列規定:
- 叢集是 VPC 原生叢集。
- 叢集執行 1.35.3-gke.1155000 以上版本。
- 節點集區執行 1.35.1-gke.1516000 以上版本。
- 如果您使用 Cloud Service Mesh 或開放原始碼 Istio,Istio 版本為 1.23 以上。
準備叢集
開始遷移前,請先完成下列工作:
- 移除 NetworkPolicy:移除現有的網路政策。如果 GKE 在重建節點時突然強制執行網路政策,您可能會遇到非預期的網路中斷問題。
- Calico 網路政策:如果您使用已啟用網路政策 (Calico) 的 GKE Standard 叢集,請停用網路政策強制執行。您無法直接遷移這些叢集。
- Active Assist 建議:查看 Active Assist 或叢集詳細資料頁面,瞭解可能與遷移作業衝突的建議。
- IP 位址容量:確認叢集的 Pod IP 位址範圍有足夠容量,可支援節點集區升級策略。詳情請參閱「GKE IP 位址使用率洞察」。
- 網路功能:在開始遷移前或遷移完成後,啟用 NodeLocal DNSCache 或節點內瀏覽等網路功能。遷移期間無法啟用。
瞭解限制
- 鎖定網路設定:開始遷移後,在遷移完成前,您無法變更叢集層級的網路設定。
- 維護期間:遷移作業會遵循維護期間和維護排除項目,因此可能會出現停滯。如要加快速度,可以手動修補節點集區。如需相關步驟,請參閱「加快遷移速度」。
- 選用的 GKE Dataplane V2 功能:遷移完成後,設定選用的 GKE Dataplane V2 功能,例如 GKE Dataplane V2 觀測能力或 Pod 的多網路支援。
- Terraform:您無法使用 Terraform 遷移至 GKE Dataplane V2。
啟動遷移作業
如要手動啟動遷移作業並略過自動診斷檢查,您可以使用 Google Cloud CLI 修補叢集。
執行下列指令:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--enable-dataplane-v2
更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
觀察遷移進度
您可以查看 datapathProvider 欄位,監控遷移狀態。
轉換期間,這個欄位會顯示 MIGRATE_TO_ADVANCED_DATAPATH。
檢查叢集狀態:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format='value(networkConfig.datapathProvider)'更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
查看節點集區狀態:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format='value(name, networkConfig.datapathProvider)'更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
檢查
anetdDaemonSet,確認代理程式是否正在執行:kubectl get ds -n kube-system anetd
加快遷移速度
如要略過自動推出時程,可以手動修補節點集區。
如要手動修補節點集區,請執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--datapath-provider=advanced-datapath
更改下列內容:
NODE_POOL_NAME:節點集區的名稱。CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
完成遷移作業
所有節點集區都遷移至 GKE Dataplane V2 後,GKE 會自動完成遷移作業。遷移作業完成後,指令輸出內容會顯示 ADVANCED_DATAPATH 狀態,且叢集正在執行 GKE Dataplane V2。
檢查叢集狀態,確認是否完成:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--format='value(networkConfig.datapathProvider)'
更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
遷移完成後,輸出內容會顯示 ADVANCED_DATAPATH。
復原遷移作業
在完成最終階段前,您隨時可以將遷移作業還原為 Dataplane V1。反向遷移與正向遷移是對稱的程序:啟動回溯後,GKE 會自動將節點集區修補回舊版資料路徑,然後完成叢集。
觀察
anetd健康狀態:復原遷移作業前,請先確認代理程式是否正在執行,判斷能否緩解失敗情形。kubectl get ds -n kube-system anetd取消執行中的節點集區作業:
找出並取消任何會阻礙叢集修補程式要求的節點集區作業。
gcloud container operations list \ --location=LOCATION \ --filter="operationType=UPGRADE_NODES AND status=RUNNING AND targetLink:*/clusters/CLUSTER_NAME"更改下列內容:
LOCATION:叢集的運算位置。CLUSTER_NAME:叢集名稱。
使用作業 ID 取消作業:
gcloud container operations cancel OPERATION_ID \ --location=LOCATION更改下列內容:
OPERATION_ID:執行中作業的 ID。LOCATION:叢集的運算位置。
啟動復原:發出叢集修補要求,將遷移作業還原至 Dataplane V1。
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --no-enable-dataplane-v2更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
觀察節點集區推出情形:檢查節點集區狀態,確認是否已遷移至舊版資料路徑。
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format='value(name, networkConfig.datapathProvider)'更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
復原期間,指令輸出內容會顯示已修補節點集區的狀態為
LEGACY_DATAPATH。觀察完成情況:所有節點集區都遷移至 Dataplane V1 後,GKE 會自動完成遷移作業。檢查叢集狀態,確認是否完成:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format='value(networkConfig.datapathProvider)'更改下列內容:
CLUSTER_NAME:叢集名稱。LOCATION:叢集的運算位置。
復原完成後,指令輸出會顯示
LEGACY_DATAPATH狀態。
疑難排解遷移問題
本節提供相關資訊,協助您排解及解決遷移至 GKE Dataplane V2 時可能遇到的常見問題。
節點集區遷移作業失敗
遷移節點集區時,GKE 會使用設定的節點數擴充升級或藍綠升級策略,先建立新節點,再刪除舊節點。如果 Google Cloud 可用區沒有足夠的資源來佈建新節點,遷移作業就會失敗,並顯示 GCE_STOCKOUT 或 ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS 錯誤。GKE 會自動重新嘗試遷移這些節點集區。如果您手動修補節點集區,請稍候片刻,等資源可用時再重新嘗試遷移。
後續步驟
- 如要進一步瞭解 GKE Dataplane V2 觀測功能,請參閱 GKE Dataplane V2 觀測功能。