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

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

最終更新日:Jun 23, 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 の概要」をご参照ください。

前提条件

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

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

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

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

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

    Kubernetes バージョン

    ACK Virtual Node コンポーネントバージョン

    1.26 以降

    v2.13.0 以降

ACK Virtual Node コンポーネントのインストール

次の手順を実行します:

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

  2. クラスターリスト ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[コンポーネントとアドオン] をクリックします。

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

    また、クラスター詳細ページの左側のナビゲーションウィンドウで [オペレーション] > [コンポーネント管理] を選択して、コンポーネント管理ページに移動することもできます。

  4. ACK Virtual Node をインストールする前に [ACS の有効化と承認] を求められた場合は、画面の指示に従ってください。ACS を有効化し、必要な権限を付与した後、OK をクリックしてインストールを続行します。

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

例:ACS CPU コンピューティング能力の使用

ACK Virtual Node コンポーネントが「前提条件」で指定されたバージョンにインストールまたはアップグレードされると、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 を許容します。
              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" # Pod が ACS コンピューティング能力を使用するように設定します。
              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 を許容します。
          tolerations:
          - key: "virtual-kubelet.io/provider" # 仮想ノードの Taint を許容します。
            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" # Pod が ACS コンピューティング能力を使用するように設定します。
            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:
            #その他のリソース
            nvidia.com/gpu: "1"
          requests:
            #その他のリソース
            nvidia.com/gpu: "1"

例:ACS GPU HPN コンピューティング能力の使用

ACS GPU HPN コンピューティング能力を使用するプロセスは、ACS CPU コンピューティング能力を使用するプロセスと似ていますが、次の要件があります:

  • この機能は、ACK Pro クラスター、ACK One 登録済みクラスター、および ACK One 分散ワークフロー Argo クラスターでのみサポートされています。

  • 事前に GPU-HPN 容量予約 を購入し、クラスターに関連付ける必要があります。

  • kube-scheduler のバージョンは、次の要件を満たす必要があります:

    Kubernetes バージョン

    kube-scheduler バージョン

    1.28

    v1.28.12-aliyun-6.9.3.cd73f3fe 以降。

    1.30

    v1.30.3-aliyun.6.9.3.ce7e2faf 以降。

    1.31

    v1.31.0-aliyun.6.9.3.051bb0e8 以降。

    1.32

    v1.32.0-aliyun.6.9.3.515ac311 以降。

    1.33

    v1.33.0-aliyun.6.9.4.8b58e6b4 以降。

  • ACK Virtual Node コンポーネントは v2.15.0 以降である必要があります。

使用方法

...     
labels:
  # ラベルで ACS GPU リソース要件を宣言します。
  alibabacloud.com/compute-class: gpu-hpn     # gpu-hpn に設定する必要があります。
  alibabacloud.com/compute-qos: default   # QoS クラス。これは、通常の ACS コンピューティング能力と同じ意味を持ちます。
...
説明
  • ACS コンピューティングクラスと QoS クラスの詳細については、「コンピューティングクラスと QoS クラスの関係」をご参照ください。

  • ACS Pod のその他のパラメーターについては、「ACS Pod の設定」をご参照ください。

  • ACS GPU HPN ノードは、gpu-hpn コンピューティングクラスの Pod のみをスケジュールできます。これらの Pod のリソース宣言で GPU リソース要件を指定する必要はありません。ノードは、他のコンピューティングクラスの Pod や、コンピューティングクラスが宣言されていない Pod をスケジュールすることはできません。

  1. Kubernetes の nodeSelector を使用して、Pod を GPU HPN ノードにスケジュールできます。

    重要

    ACS GPU HPN Pod を設定する際は、次のフィールドに注意してください:

    • コンピューティングクラスを指定します:alibabacloud.com/compute-class: gpu-hpn

    • 予約済みノードのラベルを指定します:alibabacloud.com/node-type: reserved

    • リソース仕様の requests および limits フィールドのデバイスリソース名については、NVIDIA などの実際のデバイスカードタイプに基づいて名前を指定します。

    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-hpn
            alibabacloud.com/compute-qos: default
        spec:
          # GPU HPN 予約済みノードのラベルを指定します。
          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" # 実際の GPU モデルに一致するリソース名を使用します。
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1" # 実際の GPU モデルに一致するリソース名を使用します。
  2. GPU ワークロードの実行ステータスを確認します。

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

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

        phase: Running
        resources:
          limits:
            #その他のリソース
            nvidia.com/gpu: "1"
          requests:
            #その他のリソース
            nvidia.com/gpu: "1"