このドキュメントでは、既存の 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 が表示されます。
クラスタのステータスを確認します。
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format='value(networkConfig.datapathProvider)'次のように置き換えます。
CLUSTER_NAME: クラスタの名前。LOCATION: クラスタの Compute Engine のロケーション。
ノードプールのステータスを確認します。
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format='value(name, networkConfig.datapathProvider)'次のように置き換えます。
CLUSTER_NAME: クラスタの名前。LOCATION: クラスタの Compute Engine のロケーション。
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: クラスタの 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 はノードプールをレガシー データパスに自動的にパッチ適用し、クラスタを最終処理します。
の健全性
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: クラスタの Compute Engine のロケーション。CLUSTER_NAME: クラスタの名前。
オペレーション ID を使用してオペレーションをキャンセルします。
gcloud container operations cancel OPERATION_ID \ --location=LOCATION次のように置き換えます。
OPERATION_ID: 実行中のオペレーションの ID。LOCATION: クラスタの Compute Engine のロケーション。
ロールバックを開始する: クラスタ パッチ リクエストを発行して、 移行を Dataplane V1 に戻します。
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --no-enable-dataplane-v2次のように置き換えます。
CLUSTER_NAME: クラスタの名前。LOCATION: クラスタの Compute Engine のロケーション。
ノードプールのロールアウトを確認する: ノードプールのステータスを確認して、 レガシー データパスへの移行を確認します。
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format='value(name, networkConfig.datapathProvider)'次のように置き換えます。
CLUSTER_NAME: クラスタの名前。LOCATION: クラスタの Compute Engine のロケーション。
ロールバック中、コマンド出力には、パッチ適用されたノードプールのステータス
LEGACY_DATAPATHが表示されます。最終処理を確認する: すべてのノードプールが 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
は、これらのノードプールの移行を自動的に再試行します。ノードプールに手動でパッチを適用する場合は、リソースが使用可能になるまで待ってから、移行を再試行してください。
次のステップ
- GKE Dataplane V2 のオブザーバビリティの詳細については、GKE Dataplane V2 オブザーバビリティをご覧ください。