すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Pod 用 vSwitch の変更

最終更新日:Jun 18, 2026

Terway クラスターで vSwitch の IP アドレスが枯渇した場合、vSwitch を追加して Pod の IP プールを拡張します。

次のような状況でこの操作が必要になる場合があります。

  • vSwitch が枯渇し、Pod が ContainerCreating 状態のままになっている場合。

  • ノードをスケールアウトするにあたり、特定のゾーンでより多くの IP 容量が必要になる場合。

  • IP の使用状況を複数の vSwitch に分散させて、バランスを改善したい場合。

前提条件

開始する前に、次の要件を満たしていることを確認してください。

制限事項

  • 新しい vSwitch は、ノードと同じゾーンに存在する必要があります。設定済みの vSwitch がノードのゾーンをカバーしていない場合、Terway はノードのプライマリ ENI の vSwitch にフォールバックします。

  • 既存の ENI の vSwitch は変更できません。更新された Pod vSwitch 設定を適用するには、新しいノードを追加するか、ローリング再起動を実行する必要があります。

vSwitch の IP 枯渇の検出

vSwitch の IP アドレスが枯渇すると、新しい ENI を必要とする Pod は ContainerCreating 状態のままになります。

Pod がスケジュールされているノードで Terway のログを確認します。

kubectl logs --tail=100 -f terway-eniip-***** -n kube-system -c terway

出力に次のエラーが含まれている場合、vSwitch に利用可能な IP アドレスがありません。

time="20**-03-17T07:03:40Z" level=warning msg="Assign private ip address failed: Aliyun API Error: RequestId: 2095E971-E473-4BA0-853F-0C41CF52651D Status Code: 403 Code: InvalidVSwitchId.IpNotEnough Message: The specified VSwitch \"vsw-***\" has not enough IpAddress., retrying"

また、[VPC コンソール][vSwitch][利用可能な IP アドレス] の数を確認してください。数が 0 の場合は、枯渇していることを示します。

変更が有効になるタイミング

Terway は、新しい ENI の作成時にのみ、新しい vSwitch 設定を適用します。既存の ENI には影響しません。

既存のノード: 次の状況では、新しい設定は適用されません。

  1. ノード上の ENI がまだ使用中である (Pod またはトランク ENI が実行中)。

  2. ノードが ENI の上限 (インスタンスタイプによって設定) に達している。

新しいノード: 更新後に追加されたノードは、すぐに新しい vSwitch を使用します。

Pod 用 vSwitch の変更

コンソールでの操作

Terway v1.4.4 以降が必要です。それ以前のバージョンでは、kubectl での操作を使用してください。

  1. ターゲットノードと同じゾーンにあるVPC コンソールで vSwitch を作成します。 詳細については、「vSwitch の作成と管理」をご参照ください。Virtual Private Cloud (VPC) コンソールVirtual Private Cloud (VPC) コンソールVirtual Private Cloud (VPC) コンソール

    説明

    Pod の密度は時間の経過とともに増加するため、Pod vSwitch には /19 以下のサブネットマスク (CIDR ブロックあたり少なくとも 8,192 個の IP) を使用してください。

  2. コンテナサービス管理コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

  3. [クラスター] ページでクラスターの名前をクリックし、左側のナビゲーションペインで [アドオン] をクリックします。

  4. [アドオン] ページで [ネットワーク] タブをクリックし、Terway を見つけて [アップグレード] をクリックします。 [アップグレード] が利用できない場合、バージョンはすでに最新です。 アップグレード後、[設定] をクリックします。

    説明

    他の方法でアドオンに加えた変更は、再デプロイ時に上書きされます。

    Configuration

  5. terway-eniip の [パラメーター] ページで、[PodVswitchId] で新しい vSwitch を選択します。その他のパラメーターはデフォルトのままにします。

  6. [OK] をクリックします。

kubectl での操作

この方法は、Terway v1.4.4 より前のバージョン、または kubectl を通じて設定を管理する場合に使用します。

  1. VPC コンソールで、ターゲットノードと同じゾーンに vSwitch を作成します。詳細については、「vSwitch の作成と管理」をご参照ください。

    説明

    Pod の密度は時間の経過とともに増加するため、Pod vSwitch には /19 以下のサブネットマスク (CIDR ブロックあたり少なくとも 8,192 個の IP) を使用してください。

  2. Terway の ConfigMap を編集して、新しい vSwitch を追加します。

    kubectl edit cm eni-config -n kube-system

    vswitches フィールドに新しい vSwitch ID を追加します。この例では、vsw-AAA に加えて vsw-BBB を追加します。

    eni_conf: |
      {
        "version": "1",
        "max_pool_size": 25,
        "min_pool_size": 10,
        "vswitches": {"cn-shanghai-f":["vsw-AAA", "vsw-BBB"]},
        "service_cidr": "172.21.0.0/20",
        "security_group": "sg-CCC"
      }
  3. Terway の Pod を再起動して、新しい設定を適用します。Pod は自動的に再作成されます。

    • ENI マルチ IP モードの場合は、Terway Pod を削除します。

      kubectl delete -n kube-system pod -l app=terway-eniip
    • ENI シングル IP モードの場合は、Terway Pod を削除します。

      kubectl delete -n kube-system pod -l app=terway-eni
  4. すべての Terway Pod が実行中であることを確認します。

    kubectl get pod -n kube-system | grep terway
  5. テスト用の Pod を作成し、新しい vSwitch から IP を取得することを確認します。

    説明

    新しい vSwitch 設定は、新しく作成された ENI にのみ適用されます。既存の ENI は元の vSwitch を保持します。すべてのノードに変更を適用するには、ローリング再起動を実行する必要があります。

vSwitch の選択戦略

ゾーン内に複数の vSwitch が存在する場合、Terway は vswitch_selection_policy パラメーターに基づき、新しい ENI ごとに vSwitch を 1 つ選択します。詳細については、「Terway 設定パラメーターのカスタマイズ」をご参照ください。

デフォルト: ordered

Terway は、設定で定義された順序で vSwitch を試行します。最初に利用可能な IP アドレスが見つかった vSwitch が使用されます。

エッジケース: 急速なスケーリング中に、複数の同時 ENI 作成リクエストがすべてリストの最初の利用可能な vSwitch に集中し、IP の分散が不均一になる可能性があります。

代替: random

Terway は、新しい ENI ごとにランダムに vSwitch を選択し、IP アドレスをより均等に分散させ、バーストスケーリング中のホットスポットを防ぎます。

ノードプールによる vSwitch の分離

厳密な制御を行うには、ノードレベルのネットワーク設定を構成して、ゾーンごとに各ノードプールに一意の Pod vSwitch をバインドし、IP 割り当ての競合を排除します。

よくある質問

vSwitch を追加した後、Pod がインターネットにアクセスできなくなった

新しい vSwitch には SNAT ルールがないため、その Pod はインターネットにアクセスできません。NAT Gateway を使用して、新しい vSwitch に SNAT ルールを設定します。詳細については、「クラスターのインターネットアクセスを有効にする」をご参照ください。

Pod の IP アドレスが、設定された vSwitch の CIDR ブロックの範囲外である

Pod の IP アドレスは ENI から取得され、vSwitch は ENI の作成時にのみ指定できます。その後、その ENI 上のすべての Pod は、その後の設定変更に関わらず、その vSwitch から IP アドレスを取得します。

これは通常、次の場合に発生します。

  • ノードに、以前のクラスターの ENI が残っている (Pod をドレインせずにノードが削除されたため)。

  • vSwitch の設定を更新したが、ノード上の既存の ENI はまだ古い vSwitch を使用している。

新しいノードを追加するか、既存のノードのローリング再起動を実行して、更新された設定で新しい ENI を作成してください。

vSwitch 間で IP の使用状況に偏りがある

ordered 戦略は、急速なスケーリング中にこの問題を引き起こす可能性があります。複数の同時 ENI 作成リクエストがすべて設定リストの最初の vSwitch に集中するため、他の vSwitch が十分に利用されないまま、その vSwitch が枯渇する可能性があります。

状況に応じて、次のように対応してください。

  • vSwitch が枯渇に近い既存のノードの場合: 一部のノードをローリング再起動して ENI を解放し、IP を vSwitch に返却してください。

  • 新規ノードまたは将来のデプロイの場合: vswitch_selection_policyordered から random に変更します。これにより、ENI がランダムに分散され、ホットスポットが防止されます。 詳細については、「Terway 設定パラメーターをカスタマイズする」をご参照ください。

  • 厳密な分離が必要な場合: ノードレベルのネットワーク設定を使用して、ノードプールごと、ゾーンごとに正確に 1 つの Pod vSwitch を割り当ててください。

次のステップ