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

Container Compute Service:ACK Pro クラスターでの ACS コンピューティングパワーの使用

最終更新日:Sep 30, 2026

Alibaba Cloud Container Compute Service (ACS) は Container Service for Kubernetes と統合されています。ACK Pro クラスターを使用して、ACS が提供するコンテナコンピューティングパワーに素早くアクセスできます。本トピックでは、ACK クラスターで ACS コンピューティングパワーを使用する方法について説明します。

仕組み

Container Compute Service (ACS) は、Kubernetes をユーザーインターフェイスとして使用し、コンテナ仕様に準拠したコンピューティングリソースを提供するコンテナサービスです。ACS は、Kubernetes コントロールプレーンを基盤となるコンテナコンピューティングパワーから分離する階層型アーキテクチャを使用しています。ACS コンピューティングリソース層は Pod のリソースのスケジューリングと割り当てを担当し、Kubernetes はこの層の上で Deployment、Service、StatefulSet、CronJob などのアプリケーションワークロードを管理します。

ACS コンテナのコンピューティングパワーを仮想ノードとして Kubernetes クラスターに接続できます。これにより、クラスターはノードのコンピューティング容量に制約されない強力な弾力性を得られます。ACS が Pod の基盤となるインフラストラクチャの管理を引き継ぐと、Kubernetes は個々の Pod の配置と起動を直接処理したり、基盤となる仮想マシンのリソースステータスを監視したりする必要がなくなります。ACS は、必要な Pod リソースが常に利用可能であることを保証します。

Container Service for Kubernetes (ACK) は、世界で初めて認定された Kubernetes プラットフォームの 1 つであり、コンテナ化されたアプリケーションのための高性能な管理サービスを提供します。Alibaba Cloud の仮想化、ストレージ、ネットワーキング、およびセキュリティ機能と統合して、クラスターの作成とスケーリングを簡素化し、コンテナ化されたアプリケーションの開発と管理に集中できるようにします。

ACK Pro クラスターでは、ACS Pod を作成する前に、手動で仮想ノードをデプロイする必要があります。クラスターをスケールアウトする必要がある場合、ノード容量を計画することなく、オンデマンドで仮想ノード上に ACS Pod を作成できます。ACS Pod は、通常のクラスターノード上の Pod と通信できます。長時間実行され、トラフィックが変動するワークロードについては、仮想ノードにスケジューリングすることを推奨します。このアプローチは、リソース使用率を最大化し、スケールアウト時間を短縮し、コストを削減します。トラフィックが減少した場合は、これらの Pod を迅速に解放してコストを削減できます。仮想ノード上の各 Pod は、安全で隔離されたコンテナ環境内で ACS インスタンスとして実行されます。詳細については、「ACK の概要」をご参照ください。

image

前提条件

  • 初めてサービスを使用する場合は、必要なサービスを有効化し、必要な権限を付与してください:

    • Container Service for Kubernetes を有効化し、デフォルトロールに権限を付与し、必要なクラウドサービスを有効化してください。詳細については、「ACK Pro クラスターの作成」をご参照ください。

    • Container Compute Service コンソールにログインし、画面の指示に従って ACS を有効化してください。

  • Kubernetes 1.26 以降のACK Pro クラスターが必要です。詳細については、「ACK Pro クラスターの作成」をご参照ください。クラスターのアップグレード方法については、「ACK クラスターのアップグレード」をご参照ください。

  • ACK Pro クラスターの場合、仮想ノードコンポーネント (ACK 仮想ノード) は、Kubernetes バージョンに対応するバージョン要件を満たす必要があります。

    Kubernetes バージョン

    ACK 仮想ノードコンポーネントバージョン

    1.26 以降

    v2.13.0 以降

ACK 仮想ノードコンポーネントのインストール

次の手順を実行します:

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. コアコンポーネント タブで、[ACK 仮想ノード] コンポーネントを見つけ、インストール または アップグレード をクリックして必要なバージョンにします。

    クラスター詳細ページの左側メニューで [Operations] > [Component Management] を選択して、コンポーネント管理ページに移動することもできます。

  4. [ACK 仮想ノード] をインストールする前に [Activate and Authorize ACS] のプロンプトが表示された場合は、画面の指示に従ってください。ACS を有効化して必要な権限を付与した後、OK をクリックしてインストールを続行してください。

  5. インストールが完了したら、左側メニューでノード > ノード を選択します。新しい仮想ノードの名前は、デフォルトで virtual-kubelet- で始まります。

例:ACS CPU コンピューティングパワーの使用

[ACK 仮想ノード] コンポーネントが前提条件で指定されたバージョンにインストールまたはアップグレードされると、ACS と ECI の両方のコンピューティングパワーをサポートします。

説明

Pod を仮想ノードにスケジューリングする場合、ACS を指定しない限り、デフォルトでElastic Container Instance (ECI) のコンピューティングパワーが使用されます。

ACK で ACS CPU コンピューティングパワーを使用するには、次の手順を実行します:

  1. nodeSelector、ノードアフィニティ、ResourcePolicy などの方法を使用するか、alibabacloud.com/acs: "true" ラベルを追加して、Pod を仮想ノードにスケジューリングします。詳細については、「ノードアフィニティ」をご参照ください。

    説明

    alibabacloud.com/acs: "true" ラベルを使用したスケジューリングは、ACK Serverless クラスターではサポートされていません。現在、ACK Pro クラスター、ACK 専用クラスター、ACK One 登録済みクラスター、およびACK Edge クラスターでサポートされています。

  2. ラベル alibabacloud.com/compute-class:<compute-type> を使用して、ACS Pod のインスタンスタイプを指定します。ACS インスタンスタイプの詳細については、「ACS Pod インスタンス」をご参照ください。

次の手順で詳細な例を示します:

  1. Deployment をデプロイします。

    重要

    alibabacloud.com/acs: "true" ラベルを追加して Pod をスケジューリングする場合、WaitForFirstConsumer タイプの StorageClass はサポートされません。したがって、ACK クラスターで ACS コンピューティングパワーを使用し、ACS Pod がクラウドディスクをマウントする必要がある場合は、nodeSelector または ResourcePolicy を使用して Pod を仮想ノードにスケジューリングしてください。ResourcePolicy の設定方法の詳細については、「ACK Pro クラスターは ECS と ACS のコンピューティングパワーのハイブリッドスケジューリングをサポート」をご参照ください。

    NodeSelector

    1. 次のコマンドを実行して、仮想ノードのラベルを表示します。virtual-kubelet-cn-hangzhou-k を実際の仮想ノード名に置き換えてください。

      kubectl get node virtual-kubelet-cn-hangzhou-k -oyaml

      次の出力は、labels セクションのスニペットです:

      apiVersion: v1
      kind: Node
      metadata:
        labels:
          kubernetes.io/arch: amd64
          kubernetes.io/hostname: virtual-kubelet-cn-hangzhou-k
          kubernetes.io/os: linux
          kubernetes.io/role: agent
          service.alibabacloud.com/exclude-node: "true"
          topology.diskplugin.csi.alibabacloud.com/zone: cn-hangzhou-k
          topology.kubernetes.io/region: cn-hangzhou
          topology.kubernetes.io/zone: cn-hangzhou-k
          type: virtual-kubelet # このラベルを使用して、Pod を仮想ノードにスケジューリングします。
        name: virtual-kubelet-cn-hangzhou-k
      spec:
        taints:
        - effect: NoSchedule
          key: virtual-kubelet.io/provider
          value: alibabacloud 
    2. 次の内容で nginx.yaml という名前のファイルを作成し、2 つの Pod をデプロイします。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
        labels:
          app: nginx
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            name: nginx
            labels:
              app: nginx 
              alibabacloud.com/compute-class: general-purpose # ACS Pod のコンピューティングクラスを指定します。デフォルト:general-purpose。
              alibabacloud.com/compute-qos: default # ACS Pod の QoS クラスを指定します。デフォルト:default。
          spec:
            nodeSelector:
              type: virtual-kubelet # Pod を仮想ノードにスケジューリングします。
            tolerations:
            - key: "virtual-kubelet.io/provider" # 仮想ノードの Taint を許容 (Tolerate) します。
              operator: "Exists"
              effect: "NoSchedule"
            containers:
            - name: nginx
              image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    3. NGINX アプリケーションを作成し、デプロイ結果を確認します。

      1. 次のコマンドを実行して、NGINX アプリケーションを作成します。

        kubectl apply -f nginx.yaml 
      2. 次のコマンドを実行して、デプロイ結果を確認します。

        kubectl get pods -o wide

        期待される出力:

        NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE                            NOMINATED NODE   READINESS GATES
        nginx-9cdf7bbf9-s****   1/1     Running   0          36s   10.0.6.68        virtual-kubelet-cn-hangzhou-j   <none>           <none>
        nginx-9cdf7bbf9-v****   1/1     Running   0          36s   10.0.6.67        virtual-kubelet-cn-hangzhou-k   <none>           <none>

        出力は、nodeSelector が 2 つの Pod をラベル type=virtual-kubelet を持つノードにスケジューリングしたことを示しています。

    Pod ラベルスケジューリング

    1. 次の内容で nginx.yaml という名前のファイルを作成します。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
        labels:
          app: nginx
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx 
              alibabacloud.com/acs: "true" # ACS コンピューティングパワーを使用するように Pod を設定します。
              alibabacloud.com/compute-class: general-purpose # ACS Pod のコンピューティングクラスを指定します。デフォルト:general-purpose。
              alibabacloud.com/compute-qos: default # ACS Pod の QoS クラスを指定します。デフォルト:default。
          spec:
            containers:
            - name: nginx
              image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    2. NGINX アプリケーションを作成し、デプロイ結果を確認します。

      1. 次のコマンドを実行して、NGINX アプリケーションを作成します。

        kubectl apply -f nginx.yaml 
      2. 次のコマンドを実行して、デプロイ結果を確認します。

        kubectl get pods -o wide

        期待される出力:

        NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE                            NOMINATED NODE   READINESS GATES
        nginx-9cdf7bbf9-s****   1/1     Running   0          36s   10.0.6.68        virtual-kubelet-cn-hangzhou-j   <none>           <none>
        nginx-9cdf7bbf9-v****   1/1     Running   0          36s   10.0.6.67        virtual-kubelet-cn-hangzhou-k   <none>           <none>

        出力は、Pod が alibabacloud.com/acs: "true" ラベルで指定されたとおりに仮想ノードにスケジューリングされていることを示しています。

  2. NGINX Pod の詳細を確認して、それが ACS Pod インスタンスであることを確認します。

    1. 次のコマンドを実行して、NGINX Pod の詳細を表示します。

      kubectl describe pod nginx-9cdf7bbf9-s**** 

      期待される出力 (主要情報):

      Annotations:      ProviderCreate: done
                        alibabacloud.com/client-token: edf29202-54ac-438e-9626-a1ca007xxxxx
                        alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx
                        alibabacloud.com/pod-ephemeral-storage: 30Gi
                        alibabacloud.com/pod-use-spec: 2-4Gi
                        alibabacloud.com/request-id: A0EF3BF3-37E7-5A07-AC2D-68A0CFCxxxxx
                        alibabacloud.com/schedule-result: finished
                        alibabacloud.com/user-id: 14889995898xxxxx
                        kubernetes.io/pod-stream-port: 10250
                        kubernetes.io/preferred-scheduling-node: virtual-kubelet-cn-hangzhou-j/1
                        kubernetes.io/resource-type: serverless

      alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx アノテーションは、Pod が ACS Pod インスタンスであることを確認します。

例:ACS GPU コンピューティングパワーの使用

ACS GPU コンピューティングパワーを使用する手順は、ACS CPU コンピューティングパワーの場合と似ていますが、特定のコンポーネントバージョンといくつかの追加設定が必要です。

コンポーネント設定

異なる Kubernetes バージョンのACK Pro クラスターでは、kube-scheduler コンポーネントが次のバージョン要件を満たす必要があります。

Kubernetes バージョン

kube-scheduler バージョン

1.26 以降

  • 1.31 クラスターの場合、スケジューラーのバージョンは v1.31.0-aliyun.6.8.4.8f585f26 以降である必要があります。

  • 1.30 クラスターの場合、スケジューラーのバージョンは v1.30.3-aliyun.6.8.4.946f90e8 以降である必要があります。

  • 1.28 クラスターの場合、スケジューラーのバージョンは v1.28.12-aliyun-6.8.4.b27c0009 以降である必要があります。

  • 1.26 クラスターの場合、スケジューラーのバージョンは v1.26.3-aliyun-6.8.4.4b180111 以降である必要があります。

使用方法

...     
     labels:
        # ラベルで ACS GPU リソース要件を宣言します。
        alibabacloud.com/compute-class: gpu     # GPUタイプには、固定値 'gpu' を使用します。
        alibabacloud.com/compute-qos: default   # QoSクラス。これは、通常のACSコンピューティングパワーと同じ意味を持ちます。
        alibabacloud.com/gpu-model-series: example-model  # GPU モデルシリーズ。T4 など、実際のモデルに置き換えてください。
...
説明
  1. 以下の例は、GPU コンピューティングパワーを設定する 3 つの異なる方法を示しています。

    NodeSelector

    次の YAML を使用して GPU ワークロードを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-node-selector-demo
      labels:
        app: node-selector-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: node-selector-demo
      template:
        metadata:
          labels:
            app: node-selector-demo
            # ACS属性
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # GPU モデルシリーズ。T4 など、実際のモデルに置き換えてください。
        spec:
          # 仮想ノードのラベルを指定します。
          nodeSelector:
            type: virtual-kubelet
          # 仮想ノードの Taint を許容 (Tolerate) します。
          tolerations:
          - key: "virtual-kubelet.io/provider" # 仮想ノードの Taint を許容 (Tolerate) します。
            operator: "Exists"
            effect: "NoSchedule"
          containers:
          - name: node-selector-demo
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "1000h"
            resources:
              limits:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"

    ResourcePolicy

    次の YAML を使用して GPU ワークロードを作成します。

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: dep-rp-demo
      namespace: default
    spec:
      selector:
        app: dep-rp-demo
      units:
      - resource: acs
        podLabels:
          alibabacloud.com/compute-class: gpu
          alibabacloud.com/compute-qos: default
          alibabacloud.com/gpu-model-series: example-model  # GPU モデルシリーズ。T4 など、実際のモデルに置き換えてください。
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-rp-demo
      labels:
        app: dep-rp-demo
      annotations:
        resourcePolicy: "dep-rp-demo"  # ResourcePolicyの名前を参照します。
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: dep-rp-demo
      template:
        metadata:
          labels:
            app: dep-rp-demo
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # GPU モデルシリーズ。T4 など、実際のモデルに置き換えてください。
        spec:
          containers:
          - name: demo
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "1000h"
            resources:
              limits:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"

    ResourcePolicy を使用したリソーススケジューリングの詳細については、「カスタムリソースの優先度スケジューリング」をご参照ください。

    Pod ラベルスケジューリング

    次の YAML を使用して GPU ワークロードを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-node-selector-demo
      labels:
        app: node-selector-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: node-selector-demo
      template:
        metadata:
          labels:
            app: node-selector-demo
            # ACS属性
            alibabacloud.com/acs: "true" # ACS コンピューティングパワーを使用するように Pod を設定します。
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # GPU モデルシリーズ。T4 など、実際のモデルに置き換えてください。
        spec:
          containers:
          - name: node-selector-demo
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "1000h"
            resources:
              limits:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1"
  2. 次のコマンドを実行して、GPU ワークロードの実行ステータスを確認します。

    kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyaml

    期待される出力 (主要情報):

        phase: Running
        resources:
          limits:
            #other resources
            nvidia.com/gpu: "1"
          requests:
            #other resources
            nvidia.com/gpu: "1"

Example: Use ACS GPU HPN computing power

The process for using ACS GPU HPN computing power is similar to that for ACS CPU computing power, but with the following requirements:

  • This feature is supported only in ACK Pro clusters, ACK One registered clusters, and ACK One distributed workflow Argo clusters.

  • You must purchase GPU-HPN capacity reservations in advance and associate them with your cluster.

  • The kube-scheduler version must meet the following requirements:

    Kubernetes version

    kube-scheduler version

    1.28

    v1.28.12-aliyun-6.9.3.cd73f3fe or later.

    1.30

    v1.30.3-aliyun.6.9.3.ce7e2faf or later.

    1.31

    v1.31.0-aliyun.6.9.3.051bb0e8 or later.

    1.32

    v1.32.0-aliyun.6.9.3.515ac311 or later.

    1.33

    v1.33.0-aliyun.6.9.4.8b58e6b4 or later.

  • The ACK Virtual Node component must be v2.15.0 or later.

Usage

...     
labels:
  # Declare the ACS GPU resource requirement in the labels.
  alibabacloud.com/compute-class: gpu-hpn     # Must be set to gpu-hpn.
  alibabacloud.com/compute-qos: default   # The QoS class. This has the same meaning as for regular ACS computing power.
...
説明
  • For more information about ACS compute classes and QoS classes, see Relationship between compute classes and QoS classes.

  • For information about other parameters for ACS Pods, see Configure an ACS Pod.

  • An ACS GPU HPN node can only schedule Pods of the gpu-hpn compute class. You do not need to specify GPU resource requirements in the Pod resource declaration for these Pods. The node cannot schedule Pods of other compute classes or Pods for which no compute class is declared.

  1. You can use a Kubernetes nodeSelector to schedule Pods to GPU HPN nodes.

    重要

    When you configure an ACS GPU HPN Pod, note the following fields:

    • Specify the compute class: alibabacloud.com/compute-class: gpu-hpn.

    • Specify the reserved node label: alibabacloud.com/node-type: reserved.

    • For the device resource name in the requests and limits fields of a resource specification, specify the name based on the actual device card type, such as NVIDIA or others.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-node-selector-demo
      labels:
        app: node-selector-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: node-selector-demo
      template:
        metadata:
          labels:
            app: node-selector-demo
            # ACS attributes
            alibabacloud.com/compute-class: gpu-hpn
            alibabacloud.com/compute-qos: default
        spec:
          # Specify the label for GPU HPN reserved nodes.
          nodeSelector:
            alibabacloud.com/node-type: reserved
          containers:
          - name: node-selector-demo
            image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "1000h"
            resources:
              limits:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1" # Use the resource name that matches your actual GPU model.
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1" # Use the resource name that matches your actual GPU model.
  2. Check the running status of the GPU workload.

    kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyaml

    Expected output (key information):

        phase: Running
        resources:
          limits:
            #other resources
            nvidia.com/gpu: "1"
          requests:
            #other resources
            nvidia.com/gpu: "1"