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

Container Service for Kubernetes:仮想ノードを使用して ECI に Pod をスケジュールする

最終更新日:Jun 16, 2026

ACK マネージドクラスターで Elastic Container Instance (ECI) 上に Pod を実行することで、ECS インスタンスを管理することなくトラフィックスパイクに対応できます。

注意事項

kube-scheduler v6.11.0 以降で、ラベルを追加して 1,000 を超える ACS または ECI ポッドが同時に作成される場合は、最新バージョンにアップグレードして SchedulerBatchMoveEvents=true フィーチャーゲートを有効にしてください。

ユースケース

ECI Pod はトラフィックスパイクに対応し、コンピューティングコストを削減します。

  • トラフィックパターンが変動するオンラインサービス

    トラフィックスパイクへの対応を高速化し、リソースプールのメンテナンスを削減し、コンピューティングコストを削減します。

  • 短期間のタスクやバッチコンピューティングタスク

    専用ノードのメンテナンスは不要です。実行中に使用したコンピューティングリソースのみに対して料金が発生するため、Spark や AI ジョブなどのワークロードのコストを削減できます。

前提条件

ACK クラスターが、ECI をサポートするリージョンで Kubernetes 1.16 以降を実行している必要があります。

説明

サポートされているリージョンについては、「ECI がサポートするリージョンとゾーン」をご参照ください。その後、Elastic Container Instance コンソールにログオンして ECI をアクティブ化してください。

操作手順

ステップ 1: ack-virtual-node コンポーネントをデプロイする

説明

ACK マネージドクラスターを例に説明します。ACK 専用クラスターの場合は、Marketplace ページから ack-virtual-node をデプロイしてください。詳細については、「ack-virtual-node コンポーネントのデプロイ」をご参照ください。

  1. Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、アドオン管理 をクリックします。

  3. アドオン ページで、コアコンポーネント タブをクリックし、「ACK Virtual Node」を見つけ、インストール をクリックします。画面の指示に従って、インストールを完了します。

    インストール中、クラスターのデフォルト vSwitch およびセキュリティグループが、初期 ECI 構成パラメーターとして使用されます。これらのパラメーターを変更するには、「eci-profile の設定」を実行してください。

ステップ 2: Pod を ECI にスケジュールする

説明

以下の例では、Pod または Namespace に Label を追加することで Pod を ECI にスケジュールします。その他の方法については、「仮想ノードへの Pod のスケジュール」をご参照ください。

Pod

Pod を ECI Pod として x86 アーキテクチャの仮想ノードにスケジュールするには、その Pod にラベル alibabacloud.com/eci: "true" を追加します。

  1. 以下の YAML ファイルから Deployment を作成します。

    kubectl create -f eci-pod.yaml

    eci-pod.yaml の例:

    説明

    k8s.aliyun.com/eci-use-specs アノテーションは、ECI Pod のコンピューティング仕様を指定します。詳細については、「ECI Pod のコンピューティング仕様を指定する」をご参照ください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"             # このラベルにより、Pod を ECI にスケジュールします。
          annotations:
            k8s.aliyun.com/eci-use-specs: "2-4Gi"   # ECI Pod に 2 vCPU と 4 GiB のメモリを指定します。
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  2. Pod が仮想ノードで実行されていることを確認します。

    kubectl get pod -o wide -l app=nginx

    期待される出力。 NODE 列は仮想ノードを示します。

    NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE                            NOMINATED NODE   READINESS GATES
    test-86f7fbc94f-g5m22   1/1     Running   0          38s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    test-86f7fbc94f-r4wcn   1/1     Running   0          38s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
  3. ECI Pod の詳細を確認します。

    kubectl get pod <pod-name> -o yaml

    ECI インスタンス ID は k8s.aliyun.com/eci-instance-id アノテーションで、課金用のコンピューティング仕様は k8s.aliyun.com/eci-instance-spec アノテーションで確認できます。

Namespace

ECI であるカテゴリの Pod を実行するには、名前空間を作成し、ラベル alibabacloud.com/eci: "true" を追加します。この名前空間のすべての Pod は、ECI Pod として x86 アーキテクチャの仮想ノードにスケジューリングされます。

  1. 名前空間 vk を作成し、必要なラベルを追加します。

    kubectl create ns vk
    kubectl label namespace vk alibabacloud.com/eci=true
  2. vk 名前空間に Deployment を作成します。

    kubectl create -f eci-namespace.yaml

    eci-namespace.yaml の例:

    説明

    k8s.aliyun.com/eci-use-specs アノテーションは、ECI Pod のコンピューティング仕様を指定します。詳細については、「ECI Pod のコンピューティング仕様を指定する」をご参照ください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      namespace: vk       # Label が付与された Namespace を指定して Pod を ECI にスケジュールします。
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: test
          labels:
            app: nginx
          annotations:
            k8s.aliyun.com/eci-use-specs: "2-4Gi"   # ECI Pod に 2 vCPU と 4 GiB のメモリを指定します。
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  3. Pod が仮想ノードで実行されていることを確認します。

    kubectl get pod -o wide -l app=nginx -n vk

    期待される出力。NODE 列は仮想ノードを示します。

    NAME                   READY   STATUS    RESTARTS   AGE   IP            NODE                            NOMINATED NODE   READINESS GATES
    test-8f54bcfb5-86pvc   1/1     Running   0          14s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    test-8f54bcfb5-skvkg   1/1     Running   0          14s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
  4. ECI Pod の詳細を確認します。

    kubectl get pod <pod-name> -o yaml -n vk

    k8s.aliyun.com/eci-instance-id アノテーションで ECI インスタンス ID を確認し、k8s.aliyun.com/eci-instance-spec アノテーションで課金に使用されるコンピューティング仕様を確認します。