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

Elastic Container Instance:複数ゾーンを構成してポッドを作成する

最終更新日:May 27, 2025

場合によっては、トラフィックのバーストを処理したり、ジョブを処理したりするために、Elastic Container Instance ベースのポッドを多数作成する必要があります。ただし、指定したゾーンのリソースが不足している場合、または指定した vSwitch に使用可能な IP アドレスがない場合は、ポッドを作成できません。この問題に対処するには、Elastic Container Instance ベースのポッドを作成するときに、複数のゾーンを構成して、使用可能なリソースが十分にあることを確認します。このトピックでは、複数ゾーンを構成してポッドを作成する方法について説明します。

前提条件

vSwitch は、Elastic Container Instance を作成する仮想プライベートクラウド (VPC) の異なるゾーンに作成されます。

背景情報

Elastic Container Instance を作成するときに、複数の vSwitch を指定することで、複数ゾーンを指定できます。その後、システムはリクエストを指定されたすべてのゾーンにランダムに分散します。要求されたリソースがゾーンに不足している場合、システムは別のゾーンにインスタンスを作成しようとします。

複数ゾーン (vSwitch) を指定する場合は、次の項目に注意してください。

  • 指定された vSwitch は、同じ VPC に属している必要があります。

  • 最大 10 個の vSwitch を指定できます。

複数のインスタンス仕様と複数ゾーンを同時に指定して、Elastic Container Instance の作成の成功率をさらに向上させることができます。

構成の説明

クラスターまたはポッドに対して複数のゾーンを指定できます。

  • クラスターに対して複数のゾーンを指定する場合は、クラスターに対して複数の vSwitch を指定する必要があります。この設定は、クラスター内のすべてのポッドに有効です。

  • ポッドに対して複数のゾーンを指定する場合は、ポッドを作成するときに複数の vSwitch を指定する必要があります。この設定は、そのポッドに対してのみ有効です。

クラスターの作成時に複数のゾーンを指定する

クラスターを作成する前に、クラスター VPC 内に異なるゾーンの複数の vSwitch を作成することをお勧めします。クラスターを作成するときに、VPC を選択し、次に複数の vSwitch を選択して複数のゾーンを指定できます。次の図は、Container Service for Kubernetes (ACK) Serverless クラスター を ACK コンソールで作成するときに複数の vSwitch を指定する方法を示しています。

多可用区

既存のクラスターに複数のゾーンを指定する

複数ゾーンを構成する方法は、使用する ack-virtual-node コンポーネントのバージョンによって異なります。

  • ack-virtual-node コンポーネントのバージョンが v2.0.0.90-15deb126e-aliyun 以降の場合は、eci-profile を変更します。

  • ack-virtual-node コンポーネントのバージョンが v2.0.0.90-15deb126e-aliyun より前の場合は、関連する環境変数の値を変更します。

eci-profile を変更する

既存のクラスターの eci-profile ConfigMap を変更し、eci-profile の data.vSwitchlds フィールドに vSwitch ID を入力して、複数のゾーンを指定できます。次の操作を実行します。

  1. eci-profile を編集します。

    kubectl edit cm -n kube-system eci-profile
  2. vSwitchIds フィールドの値を変更します。

    vSwitch ID を追加します。複数の vSwitch ID はコンマ (,) で区切ります。

    data:
      enableClusterIp: "true"
      enableHybridMode: "false"
      enablePrivateZone: "false"
      resourceGroupId: ""
      securityGroupId: sg-2ze0b9o8pjjzts4h****
      selectors: ""
      vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** 
      vpcId: vpc-2zeghwzptn5zii0w7****
  3. 変更を保存して終了します。

関連する環境変数の値を変更する

説明

新しい機能を使用するには、ack-virtual-node コンポーネントを最新バージョンにアップグレードすることをお勧めします。

複数のゾーンを指定するには、ack-virtual-node コンポーネントのデプロイ方法に基づいて、Deployment または StatefulSet の ECI_VSWITCH 環境変数の値を変更します。次の例は、Deployment の ECI_VSWITCH 環境変数の値を変更する方法を示しています。

  1. Deployment を編集します。

    kubectl -n kube-system edit deployment/virtual-node-controller
  2. ECI_VSWITCH 環境変数の値を変更します。

    ECI_VSWITCH 環境変数の値に vSwitch ID を追加します。複数の vSwitch ID はコンマ (,) で区切ります。

    - name:  ECI_VSWITCH
      value:  vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k**** 
  3. 変更を保存して終了します。

ポッドの作成時に複数のゾーンを指定する

ポッドの構成ファイルのメタデータに次のアノテーションを追加して、複数のゾーンを指定できます。

  • k8s.aliyun.com/eci-vswitch: 複数ゾーンを指定するために使用される vSwitch の ID。

    説明

    k8s.aliyun.com/eci-vswitch アノテーションが Elastic Container Instance ベースのポッドに追加されている場合、動的にプロビジョニングされたディスクボリュームがポッドにマウントされているときに、ポッドは WaitForFirstConsumer タイプの StorageClass の使用をサポートしません。

  • k8s.aliyun.com/eci-schedule-strategy: マルチゾーンスケジューリングポリシー。有効な値: VSwitchOrderedVSwitchRandom。次の表に、スケジューリングポリシーを示します。

    説明

    k8s.aliyun.com/eci-schedule-strategy アノテーションを指定しない場合、デフォルトで VSwitchRandom ポリシーが使用されます。

    ポリシー

    スケジューリングの説明

    VSwitchOrdered: システムは、vSwitch のソート順序でリソースをスケジュールします。

    1. 作成しているポッドにディスクをマウントする場合、ディスクのゾーンはポッドのゾーンと同じである必要があります。ポッドまたはディスクをサポートしていないゾーンは除外されます。

    2. システムは、特定のゾーンに対応する指定された vSwitch の順序でポッドを作成しようとします。最初のゾーンの使用可能なリソースが不足している場合、システムは 2 番目のゾーンを試行します。これをポッドが作成されるまで繰り返します。

    VSwitchRandom: システムは、最適な在庫ポリシーに基づいてリソースをスケジュールします。

    1. 作成しているポッドにディスクをマウントする場合、ディスクのゾーンはポッドのゾーンと同じである必要があります。ポッドまたはディスクをサポートしていないゾーンは除外されます。

    2. Alibaba Cloud は、要件に最適な在庫を持つゾーンに対応する vSwitch を選択します。

    3. 作成しているポッドに仕様を指定した場合、指定されたポッド仕様のリザーブドインスタンスを持つゾーンが優先的に使用されてポッドが作成されます。

    4. ストレージパフォーマンスの高いゾーンが優先的に使用されてポッドが作成されます。次の初期ゾーンは、ポッドの作成に使用される優先順位が低くなります。

      • cn-beijing-e と cn-beijing-d

      • cn-shenzhen-a、cn-shenzhen-b、cn-shenzhen-c

      • cn-hangzhou-b、cn-hangzhou-e、cn-hangzhou-f

      • cn-shanghai-a と cn-shanghai-c

重要
  • アノテーションは、ポッドの構成ファイルのメタデータに追加する必要があります。たとえば、Deployment を作成するときは、spec.template.metadata セクションにアノテーションを追加する必要があります。

  • Elastic Container Instance の機能を使用するには、Elastic Container Instance ベースのポッドを作成するときにのみアノテーションを追加できます。ポッドを更新するときにアノテーションを追加または変更した場合、これらのアノテーションは有効になりません。

構成例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-vswitch: "vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k****"    # 複数の vSwitch ID を指定します。
        k8s.aliyun.com/eci-schedule-strategy: "VSwitchOrdered"   # マルチゾーンスケジューリングポリシーを構成します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

次のステップ

ネットワークアドレス変換 (NAT) ゲートウェイを使用してインターネットにアクセスし、複数ゾーン (vSwitch) を構成して Elastic Container Instance を作成する場合は、NAT ゲートウェイに構成したソースネットワークアドレス変換 (SNAT) エントリの数が、構成したゾーンの数に対して十分であるかどうかを確認する必要があります。

たとえば、SNAT エントリを作成するときに、vSwitch を指定します。Elastic Container Instance を作成するときに複数の vSwitch を指定する場合は、新しい vSwitch に接続されている Elastic Container Instance がインターネットにアクセスできるように、新しい vSwitch の SNAT エントリを増やす必要があります。

SNAT