將 VPC 原生叢集遷移至 GKE Dataplane V2

本文說明如何將現有的 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。

  1. 檢查叢集狀態:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(networkConfig.datapathProvider)'
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • LOCATION:叢集的運算位置。
  2. 查看節點集區狀態:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=LOCATION \
        --format='value(name, networkConfig.datapathProvider)'
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • LOCATION:叢集的運算位置。
  3. 檢查 anetd DaemonSet,確認代理程式是否正在執行:

    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 會自動將節點集區修補回舊版資料路徑,然後完成叢集。

  1. 觀察 anetd 健康狀態:復原遷移作業前,請先確認代理程式是否正在執行,判斷能否緩解失敗情形。

    kubectl get ds -n kube-system anetd
    
  2. 取消執行中的節點集區作業:

    1. 找出並取消任何會阻礙叢集修補程式要求的節點集區作業。

      gcloud container operations list \
          --location=LOCATION \
          --filter="operationType=UPGRADE_NODES AND status=RUNNING AND targetLink:*/clusters/CLUSTER_NAME"
      

      更改下列內容:

      • LOCATION:叢集的運算位置。
      • CLUSTER_NAME:叢集名稱。
    2. 使用作業 ID 取消作業:

      gcloud container operations cancel OPERATION_ID \
          --location=LOCATION
      

      更改下列內容:

      • OPERATION_ID:執行中作業的 ID。
      • LOCATION:叢集的運算位置。
  3. 啟動復原:發出叢集修補要求,將遷移作業還原至 Dataplane V1。

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --no-enable-dataplane-v2
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • LOCATION:叢集的運算位置。
  4. 觀察節點集區推出情形:檢查節點集區狀態,確認是否已遷移至舊版資料路徑。

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=LOCATION \
        --format='value(name, networkConfig.datapathProvider)'
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • LOCATION:叢集的運算位置。

    復原期間,指令輸出內容會顯示已修補節點集區的狀態為 LEGACY_DATAPATH。

  5. 觀察完成情況:所有節點集區都遷移至 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 會自動重新嘗試遷移這些節點集區。如果您手動修補節點集區,請稍候片刻,等資源可用時再重新嘗試遷移。

後續步驟