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 のオブザーバビリティや Pod のマルチネットワーク サポートなど、GKE Dataplane V2 のオプション機能 を構成します。
  • Terraform: Terraform を使用して GKE Dataplane V2 に移行することはできません。

移行を開始する

移行を手動で開始して自動診断チェックをバイパスするには、Google Cloud CLI を使用してクラスタにパッチを適用します。

次のコマンドを実行します。

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

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • LOCATION: クラスタの Compute Engine のロケーション。

移行の進行状況を確認する

移行ステータスは、datapathProvider フィールドを確認することでモニタリングできます。 移行中、このフィールドには MIGRATE_TO_ADVANCED_DATAPATH が表示されます。

  1. クラスタのステータスを確認します。

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

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • LOCATION: クラスタの Compute Engine のロケーション。
  2. ノードプールのステータスを確認します。

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

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • LOCATION: クラスタの Compute Engine のロケーション。
  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: クラスタの Compute Engine のロケーション。

移行を完了する

すべてのノードプールが GKE Dataplane V2 に移行されると、GKE は移行を自動的に完了します。移行が完了すると、コマンド出力にステータス ADVANCED_DATAPATH が表示され、クラスタは GKE Dataplane V2 を実行しています。

クラスタのステータスを確認して完了を確認します。

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

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • LOCATION: クラスタの Compute Engine のロケーション。

移行が完了すると、出力に 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: クラスタの Compute Engine のロケーション。
      • CLUSTER_NAME: クラスタの名前。
    2. オペレーション ID を使用してオペレーションをキャンセルします。

      gcloud container operations cancel OPERATION_ID \
          --location=LOCATION
      

      次のように置き換えます。

      • OPERATION_ID: 実行中のオペレーションの ID。
      • LOCATION: クラスタの Compute Engine のロケーション。
  3. ロールバックを開始する: クラスタ パッチ リクエストを発行して、 移行を Dataplane V1 に戻します。

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

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • LOCATION: クラスタの Compute Engine のロケーション。
  4. ノードプールのロールアウトを確認する: ノードプールのステータスを確認して、 レガシー データパスへの移行を確認します。

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

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • LOCATION: クラスタの Compute Engine のロケーション。

    ロールバック中、コマンド出力には、パッチ適用されたノードプールのステータス LEGACY_DATAPATH が表示されます。

  5. 最終処理を確認する: すべてのノードプールが Dataplane V1 に移行されると、GKE は移行を自動的に完了します。クラスタのステータスを確認して完了を確認します。

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

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • LOCATION: クラスタの Compute Engine のロケーション。

    ロールバックが完了すると、コマンド出力にステータス LEGACY_DATAPATH が表示されます。

移行のトラブルシューティング

このセクションでは、GKE Dataplane V2 への移行時に発生する可能性のある一般的な問題のトラブルシューティングと解決に役立つ情報を提供します。

ノードプールの移行が失敗する

ノードプールを移行する場合、GKE は構成されたサージ アップグレードまたは Blue/Green アップグレード戦略を使用して、古いノードを削除する前に新しいノードを作成します。新しいノードをプロビジョニングするのに十分なリソースがゾーン Google Cloud にない場合、移行は GCE_STOCKOUT または ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS エラーで失敗します。GKE は、これらのノードプールの移行を自動的に再試行します。ノードプールに手動でパッチを適用する場合は、リソースが使用可能になるまで待ってから、移行を再試行してください。

次のステップ