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

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

最終更新日:Feb 26, 2026

短期間に多数の Pod を迅速に作成する必要がある場合、Elastic Compute Service (ECS) ノードのスケーリングでは時間がかかりすぎる可能性があります。また、余分な ECS ノードを予約すると、リソースの無駄になります。Container Service for Kubernetes (ACK) 仮想ノードを使用すると、ECS ノードを購入または管理することなく、Pod を Elastic Container Instance (ECI) に直接スケジュールできます。このトピックでは、ACK マネージドクラスターで Pod を ECI にスケジュールする方法について説明します。

シナリオ

ECI を使用すると、トラフィックスパイクに対応し、計算コストを削減できます。一般的なシナリオは次のとおりです。

  • トラフィックのピークと谷が明確なオンラインサービス

    オンライン教育、eコマース、および同様のサービスのトラフィックには、明確なピークと谷があることがよくあります。ECI ベースの Pod を使用すると、トラフィックスパイクにより迅速に対応し、固定リソースプールを維持する必要性を減らすことができるため、計算コストが削減されます。

  • 非連続的な計算タスク

    ECI ベースの Pod で計算タスクを実行します。固定ノードを維持する必要はありません。タスク実行中に使用された計算リソースに対してのみ支払いが発生するため、計算コストが削減されます。例としては、Spark や AI タスクなどがあります。

前提条件

ご利用の ACK クラスターは Kubernetes バージョン 1.16 以降を実行している必要があります。クラスターが配置されているリージョンが ECI をサポートしている必要があります。

説明

ご利用のクラスターのリージョンがサポートされているか確認してください。詳細については、「ECI がサポートするリージョンとゾーン」をご参照ください。その後、Elastic Container Instance コンソールにログインして ECI サービスをアクティブ化します。

操作手順

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

説明

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

  1. ACK コンソールにログインします。ACK コンソール。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左ナビゲーションペインで、アドオン管理 をクリックします。

  3. コンポーネント管理 ページで、コアコンポーネント セクションにある ACK Virtual Node を見つけて、インストール をクリックします。その後、プロンプトに従って操作を完了します。

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

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

説明

以下の手順では、Pod または名前空間にラベルを追加することで、Pod を仮想ノードにスケジュールして ECI で実行する方法を示します。その他のスケジューリングオプションについては、「Pod を仮想ノードにスケジュールする」をご参照ください。

Pod にラベルを追加する

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

  1. 以下の YAML ファイルを使用して Deployment を作成します。

    kubectl create -f eci-pod.yaml

    eci-pod.yaml の例は次のとおりです。

    説明

    この YAML は、アノテーション k8s.aliyun.com/eci-use-specs を使用して ECI Pod 仕様を指定します。ECI Pod 仕様の構成の詳細については、「Elastic Container Instance の計算仕様を指定する」をご参照ください。

    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"             # Add this label to schedule the pod to ECI 
          annotations:
            k8s.aliyun.com/eci-use-specs: "2-4Gi"   # Specify 2 vCPUs and 4 GiB of memory for the ECI pod
        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 列で、Pod が仮想ノードにスケジュールされていることを確認できます。

    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

    返された YAML で、k8s.aliyun.com/eci-instance-id フィールドを使用して ECI インスタンス ID を取得します。k8s.aliyun.com/eci-instance-spec フィールドを使用して、ECI Pod の実際の課金仕様を確認します。

名前空間にラベルを追加する

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

  1. 名前空間 vk を作成し、それにラベルを追加します。

    kubectl create ns vk
    kubectl label namespace vk alibabacloud.com/eci=true
  2. 以下の YAML ファイルを使用して、vk 名前空間に Deployment を作成します。

    kubectl create -f eci-namespace.yaml

    eci-namespace.yaml の例は次のとおりです。

    説明

    この YAML は、アノテーション k8s.aliyun.com/eci-use-specs を使用して ECI Pod 仕様を指定します。ECI Pod 仕様の構成の詳細については、「Elastic Container Instance の計算仕様を指定する」をご参照ください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      namespace: vk       # Specify a namespace with the label to schedule pods to 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"   # Specify 2 vCPUs and 4 GiB of memory for the ECI pod
        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 列で、Pod が仮想ノードにスケジュールされていることを確認できます。

    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

    返された YAML で、k8s.aliyun.com/eci-instance-id フィールドを使用して ECI インスタンス ID を取得します。k8s.aliyun.com/eci-instance-spec フィールドを使用して、ECI Pod の実際の課金仕様を確認します。