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

Container Compute Service:ACK One 登録済みクラスターで ACS の計算能力を使用する

最終更新日:Jan 25, 2026

Container Compute Service (ACS) は、分散型クラウドコンテナー プラットフォーム for Kubernetes (ACK One) 登録済みクラスター に統合されています。 ACK One 登録済みクラスター を使用して、ACS によって提供される計算能力を迅速に使用できます。このトピックでは、ACK One の登録済みクラスター で ACS の計算能力を使用する方法について説明します。

ACS の計算能力を ACK One 登録済みクラスターで使用する方法

Container Compute Service (ACS) は、Kubernetes のコンテナー仕様に準拠したコンテナーコンピューティングリソースを提供するクラウドコンピューティングサービスです。ACS は、階層型アーキテクチャを採用して Kubernetes の制御と計算能力を実装しています。コンピューティングリソース層は、Pod にリソースをスケジュールおよび割り当てます。Kubernetes 制御層は、デプロイメント、サービス、ステートフルセット、CronJob などのワークロードを管理します。

ACS の計算能力は、仮想ノードを使用して Kubernetes クラスターに実装できます。このようにして、Kubernetes クラスターは高い弾力性を備え、クラスターノードの計算能力によって制限されなくなります。ACS を使用して Pod のインフラストラクチャ管理を引き継いだ後、Kubernetes クラスターは個々の Pod をスケジュールまたは起動する必要がなくなります。さらに、Kubernetes クラスターは基盤となる VM のリソースを気にする必要がなくなります。ACS はいつでも Pod のリソース要件を満たすことができます。

ACK One 登録済みクラスター では、ack-virtual-node コンポーネントをインストールして仮想ノードをデプロイし、ACS Pod を作成する必要があります。クラスターをスケールアウトする必要がある場合は、ノードのリソース容量を計画することなく、仮想ノードに ACS Pod を作成できます。ACS Pod は、クラスター内の物理ノード上の Pod と通信できます。リソースを効率的に使用し、スケーリング時間を短縮し、コストを削減するには、長期間実行され、仮想ノードへの弾力的なトラフィックを持つ特定のワークロードをスケジュールすることをお勧めします。ビジネストラフィックの数が減少すると、仮想ノード上の Pod を迅速に解放して使用コストを削減できます。仮想ノード上の Pod は、ACS 上に構築された安全で隔離された環境で実行されます。この場合、Pod は ACS Pod と呼ばれます。詳細については、「登録済みクラスターの概要」をご参照ください。

前提条件

ACK One 登録済みクラスターで ACS の CPU 計算能力を使用する方法

必要なバージョンの [ACK 仮想ノード] をインストールするか、コンポーネントをバージョン 2.13.0 以降に更新すると、ACS Pod とエラスティックコンテナーインスタンスを作成できます。

説明

Pod を仮想ノードにスケジュールするときに、Pod のコンピューティングクラスを指定しないと、デフォルトで Pod のスケジューリングにエラスティックコンテナーインスタンスが優先されます。

ACK クラスターで ACS の計算能力を使用するには、次の手順を実行します。

  1. ノードセレクター、アフィニティとアンチアフィニティルール、ResourcePolicy、および alibabacloud.com/acs: true ラベルを構成して、Pod を仮想ノードにスケジュールします。詳細については、「ノードアフィニティスケジューリング」をご参照ください。

  2. ACS Pod を作成するときに、Pod に alibabacloud.com/compute-class:コンピューティングクラス ラベルを追加して、Pod のコンピューティングクラスを指定します。ACS Pod のコンピューティングクラスの詳細については、「ACS Pod の概要」をご参照ください。

次の手順を実行します。

  1. デプロイメントを作成します。

    NodeSelector

    1. 次のコマンドを実行して、仮想ノードのラベルをクエリします。次のコマンドの virtual-kubelet-cn-shanghai-l を実際の仮想ノード名に置き換えます。

      kubectl get node virtual-kubelet-cn-shanghai-l -oyaml

      予期される出力:

      apiVersion: v1
      kind: Node
      metadata:
        labels:
         beta.kubernetes.io/arch: amd64
          beta.kubernetes.io/os: linux
          kubernetes.io/arch: amd64
          kubernetes.io/hostname: virtual-kubelet-cn-shanghai-l
          kubernetes.io/os: linux
          kubernetes.io/role: agent
          service.alibabacloud.com/exclude-node: "true"
          topology.diskplugin.csi.alibabacloud.com/zone: cn-shanghai-l
          topology.kubernetes.io/region: cn-shanghai
          topology.kubernetes.io/zone: cn-shanghai-l
          type: virtual-kubelet # 各仮想ノードにはこのラベルが付いています。Pod を仮想ノードにスケジュールする場合、このラベルを Pod のノードセレクターとして構成できます。
        name: virtual-kubelet-cn-shanghai-l
      spec:
        taints:
        - effect: NoSchedule
          key: virtual-kubelet.io/provider
          value: alibabacloud
    2. 次のコンテンツを使用して nginx.yaml という名前の 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 # 仮想ノードを選択するために使用されるノードセレクター。
            tolerations:
            - key: "virtual-kubelet.io/provider" # 仮想ノードを許容するために使用される許容。
              operator: "Exists"
              effect: "NoSchedule"
            containers:
            - name: nginx
              image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine
              ports:
                - containerPort: 80
                  protocol: TCP        
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    3. NGINX アプリケーションをデプロイし、Pod をクエリします。

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

        kubectl apply -f nginx.yaml 
      2. 次のコマンドを実行して、NGINX アプリケーションがデプロイされているかどうかを確認します。

        kubectl get pods -o wide

        予期される出力:

        NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE                            NOMINATED NODE   READINESS GATES
        nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>
        nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>

        コマンド出力は、2 つの Pod が type=virtual-kubelet ラベルを持つノードにデプロイされていることを示しています。これは、デプロイメント構成の nodeSelector パラメーターで指定されています。

    ラベルスケジューリング

    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 の計算能力を使用します。
              alibabacloud.com/compute-class: general-purpose # ACS Pod のコンピューティングクラス。デフォルト値: general-purpose。
              alibabacloud.com/compute-qos: default # ACS Pod の QoS クラス。デフォルト値: default。
          spec:
            containers:
            - name: nginx
              image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine
              ports:
                - containerPort: 80
                  protocol: TCP 
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    2. 次のコマンドを実行して、NGINX アプリケーションを作成します。

      kubectl apply -f nginx.yaml 
    3. 次のコマンドを実行して、NGINX アプリケーションがデプロイされているかどうかを確認します。

      kubectl get pods -o wide

      予期される出力:

      NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE                            NOMINATED NODE   READINESS GATES
      nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>
      nginx-54bcbc9b66-****   1/1     Running   0          3m29s   192.168.XX.XXX   virtual-kubelet-cn-shanghai-l   <none>           <none>

      コマンド出力は、2 つの Pod が type=virtual-kubelet ラベルを持つノードにデプロイされていることを示しています。これは、デプロイメント構成の nodeSelector パラメーターで指定されています。

  2. 次のコマンドを実行して、NGINX アプリケーション用に作成された Pod の詳細をクエリします。

    kubectl describe pod nginx-54bcbc9b66-**** 

    予期される出力:

    Annotations:  ProviderCreate: done
                  alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****
                  alibabacloud.com/pod-ephemeral-storage: 30Gi
                  alibabacloud.com/pod-use-spec: 2-2Gi
                  kubernetes.io/pod-stream-port: 10250
                  network.alibabacloud.com/enable-dns-cache: false
                  topology.kubernetes.io/region: cn-shanghai

    コマンド出力は、Pod の構成に alibabacloud.com/instance-id: acs-uf6008giwgjxlvn***** アノテーションが含まれていることを示しています。これは、Pod が ACS Pod であることを示しています。

ACK One 登録済みクラスターで ACS の GPU 計算能力を使用する方法

ACS GPU 計算能力を使用する手順は、ACS CPU 計算能力を使用する手順と似ています。ただし、スケジューリングコンポーネントがバージョン要件を満たしていることを確認し、追加の構成を追加する必要もあります。

アクティベーション

ACK クラスターで ACS GPU 計算能力を使用する機能は、招待プレビュー中です。この機能を使用するには、チケットを送信 してください。

ACK One の登録済みクラスターで ACS の計算能力を使用する方法

...     
     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 など) を指定します。
...
説明

NodeSelector

  1. 次のコンテンツを使用して 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
          # 許容される汚染。
          tolerations:
          - key: "virtual-kubelet.io/provider" # 仮想ノードを許容するために使用される許容。
            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"
  2. 次のコマンドを実行して、GPU アクセラレーションワークロードのステータスをクエリします。

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

    予期される出力:

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

ラベルスケジューリング

  1. 次のコンテンツを使用して 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 の計算能力を使用します。
            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"