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

Container Compute Service:ACK Pro クラスターでの ACS 計算能力の利用

最終更新日:Mar 01, 2026

Container Compute Service (ACS) は、仮想ノードを介して ACK Pro マネージドクラスターにサーバーレスなコンテナー計算能力を提供します。仮想ノードにスケジュールされた Pod は、基盤となるインフラストラクチャやノード容量の計画を管理することなく、安全で分離された ACS 環境で実行されます。

仕組み

ACS はレイヤー化されたアーキテクチャを採用しています。

  • 計算リソースレイヤー:Pod へのリソースのスケジュールと割り当てを実行します。

  • Kubernetes コントロールレイヤー:Deployment、Service、StatefulSet、CronJob などのワークロードを管理します。

仮想ノードは、ACS の計算能力を ACK クラスターに統合するブリッジとして機能します。ACK Virtual Node コンポーネントをインストールすると、これらの仮想ノードにスケジュールされた Pod は ACS Pod になります。ACS Pod は、同一クラスター内の物理ノード上の Pod と通信できます。

Architecture diagram

仮想ノードの利用タイミング

仮想ノードは、ワークロードが周期的に変動する長期間稼働型アプリケーションに推奨されます。主なメリットは以下のとおりです。

  • リソース利用率の向上とコスト削減。

  • ノード容量の事前プロビジョニング不要で、高速なスケーリングが可能。

  • ワークロードが減少した際に、仮想ノードから Pod を削除することでコストを節約。

制限事項

制限事項説明
StorageClass 制限WaitForFirstConsumer StorageClass は、Pod ラベル alibabacloud.com/acs: "true" を使用する場合にサポートされません。ACK クラスター内で ACS Pod にディスクをマウントするには、nodeSelector または ResourcePolicy を使用してください。詳細については、「ACK Pro クラスターにおける ECS インスタンスと ACS 計算能力のコロケートスケジューリング」をご参照ください。
acs: "true" ラベルのクラスタータイプ制限ACK マネージドクラスター、ACK 専有クラスター、ACK One 登録済みクラスター、および ACK Edge クラスターに適用されます。ACK Serverless クラスターには適用されません。
デフォルトのスケジューリング動作計算クラスを指定しない場合、Pod スケジューリングにはデフォルトでエラスティックコンテナインスタンスが使用されます。
GPU 計算能力(招待プレビュー)GPU 計算能力を有効にするには、チケットを送信してください。
GPU-HPN 計算能力(招待プレビュー)分散 Argo ワークフロー向けの ACK マネージドクラスター、ACK One 登録済みクラスター、および ACK One Kubernetes クラスターでのみ利用可能です。コンポーネントバージョンは招待プレビュー段階であり、必要なバージョンについてはサポートチケットを送信してください。

前提条件

作業を開始する前に、以下の準備が完了していることを確認してください。

  • Container Service for Kubernetes (ACK) を有効化し、ACS にデフォルトロールを割り当て、その他の必要なクラウドサービスを有効化済みであること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。

  • ACSコンソールにログインし、画面の指示に従ってACSをアクティブ化しました。

  • Kubernetes 1.26 以降を実行している ACK Pro マネージドクラスターがあること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。既存のクラスターをアップグレードする場合は、「ACK クラスターの手動アップグレード」をご参照ください。

  • ACK Virtual Node バージョン v2.13.0 以降がインストール済みであること(Kubernetes 1.26+ で必須)。

ACK Virtual Node のインストール

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

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

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

    Install ACK Virtual Node

  4. ACS の有効化および権限付与を求められた場合は、画面の指示に従って、OK をクリックします。

インストールの確認

インストール後、仮想ノードが利用可能かどうかを確認します。

  1. クラスター詳細ページの左側ナビゲーションウィンドウで、ノード > ノード を選択します。

  2. ノードリストに、virtual-kubelet- で始まるノードが表示されていることを確認します。

    Virtual nodes

CPU Pod を仮想ノードにスケジュール

以下の 3 つのスケジューリング方法を利用できます。ディスクおよびスケジューリング要件に応じて選択してください。ノードアフィニティスケジューリングの詳細については、「ノードアフィニティスケジューリング」をご参照ください。

方法最適な用途ディスクサポート
nodeSelectorどの仮想ノードで Pod を実行するかを直接制御したい場合完全対応(WaitForFirstConsumer StorageClass を含む)
Pod ラベル (alibabacloud.com/acs: "true")Toleration やセレクターの設定なしでシンプルな構成を実現したい場合WaitForFirstConsumer StorageClass は非対応
ResourcePolicyECS および ACS リソースを横断する優先度ベースのスケジューリング完全対応(WaitForFirstConsumer StorageClass を含む)

方法 1:nodeSelector

この方法では、仮想ノードに付与されている type: virtual-kubelet ラベルと、仮想ノードの Taint に対する Toleration を使用します。

  1. 利用可能なノードを特定するために、仮想ノードのラベルを照会します。出力内の主要ラベルは以下のとおりです。

       kubectl get node virtual-kubelet-cn-hangzhou-k -oyaml
       labels:
         type: virtual-kubelet          # これを nodeSelector として使用
         kubernetes.io/hostname: virtual-kubelet-cn-hangzhou-k
         topology.kubernetes.io/zone: cn-hangzhou-k
       taints:
       - effect: NoSchedule
         key: virtual-kubelet.io/provider
         value: alibabacloud               # この Taint を許容
  2. 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/compute-class: general-purpose  # 計算クラス。デフォルト:general-purpose。
               alibabacloud.com/compute-qos: default             # QoS クラス。デフォルト:default。
           spec:
             nodeSelector:
               type: virtual-kubelet                             # 仮想ノードを対象とする。
             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. デプロイして確認します。期待される出力:両方の Pod が virtual-kubelet-* ノードにスケジュールされています。

       kubectl apply -f nginx.yaml
       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>

方法 2:Pod ラベル

nodeSelector や Toleration を構成せずに、Pod を仮想ノードにスケジュールするには、alibabacloud.com/acs: "true" ラベルを追加します。

説明

このラベルは ACK Serverless クラスターには適用されません。ACK マネージドクラスター、ACK 専有クラスター、ACK One 登録済みクラスター、および ACK Edge クラスターに適用されます。

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
        alibabacloud.com/compute-qos: default
    spec:
      containers:
      - name: nginx
        image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
        resources:
          limits:
            cpu: 2
          requests:
            cpu: 2

デプロイおよび確認は、方法 1 と同様に行います。

Pod が ACS Pod であることを確認

デプロイ後、Pod が ACS Pod として実行されていることを確認します。

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

出力内の alibabacloud.com/instance-id アノテーションを確認します。

Annotations:
  alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx
  alibabacloud.com/pod-use-spec: 2-4Gi

acs-* 形式のインスタンス ID により、Pod が ACS 計算能力上で実行されていることが確認できます。

GPU Pod を仮想ノードにスケジュール

ACS GPU 計算能力は CPU Pod と同じスケジューリング方法を採用しますが、追加のコンポーネント要件およびラベルが必要です。

重要

ACS GPU 計算能力は招待プレビュー段階です。有効化するには、チケットを送信してください。

コンポーネント要件

ご利用のクラスターの Kubernetes バージョンに応じて、必要な kube-scheduler バージョンをインストールします。

Kubernetes バージョン最低限必要な kube-scheduler バージョン
1.31v1.31.0-aliyun.6.8.4.8f585f26
1.30v1.30.3-aliyun.6.8.4.946f90e8
1.28v1.28.12-aliyun-6.8.4.b27c0009
1.26v1.26.3-aliyun-6.8.4.4b180111

kube-scheduler コンポーネントの詳細については、「kube-scheduler」をご参照ください。

GPU Pod のラベル

すべての GPU スケジューリング方法において、Pod に以下のラベルが必要です。

labels:
  alibabacloud.com/compute-class: gpu                   # 計算クラスを gpu に設定。
  alibabacloud.com/compute-qos: default                 # QoS クラス。
  alibabacloud.com/gpu-model-series: <gpu-model>        # GPU モデル(例:T4 または GN8IS)。

例:nodeSelector を使用した GPU Pod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-demo
  labels:
    app: gpu-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-demo
  template:
    metadata:
      labels:
        app: gpu-demo
        alibabacloud.com/compute-class: gpu
        alibabacloud.com/compute-qos: default
        alibabacloud.com/gpu-model-series: <gpu-model>   # ご利用の GPU モデル(例:T4)に置き換え。
    spec:
      nodeSelector:
        type: virtual-kubelet
      tolerations:
      - key: "virtual-kubelet.io/provider"
        operator: "Exists"
        effect: "NoSchedule"
      containers:
      - name: gpu-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 を使用した GPU Pod

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: gpu-rp-demo
  namespace: default
spec:
  selector:
    app: gpu-rp-demo
  units:
  - resource: acs
    podLabels:
      alibabacloud.com/compute-class: gpu
      alibabacloud.com/compute-qos: default
      alibabacloud.com/gpu-model-series: <gpu-model>     # ご利用の GPU モデル(例:T4)に置き換え。
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-rp-demo
  labels:
    app: gpu-rp-demo
  annotations:
    resourcePolicy: "gpu-rp-demo"                        # ResourcePolicy を参照。
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-rp-demo
  template:
    metadata:
      labels:
        app: gpu-rp-demo
    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 ラベルを使用した GPU Pod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-demo
  labels:
    app: gpu-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-demo
  template:
    metadata:
      labels:
        app: gpu-demo
        alibabacloud.com/acs: "true"                     # ACS 仮想ノードにスケジュール。
        alibabacloud.com/compute-class: gpu
        alibabacloud.com/compute-qos: default
        alibabacloud.com/gpu-model-series: <gpu-model>   # ご利用の GPU モデル(例:T4)に置き換え。
    spec:
      containers:
      - name: gpu-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"

GPU Pod のステータス確認

kubectl get pod gpu-demo-9cdf7bbf9-s**** -oyaml

Pod が実行中であり、GPU リソースが割り当てられていることを確認します。

phase: Running

    resources:
      limits:
        nvidia.com/gpu: "1"
      requests:
        nvidia.com/gpu: "1"

GPU-HPN Pod を仮想ノードにスケジュール

ACS GPU-HPN(ハイパフォーマンスネットワーキング)Pod は、キャパシティリザベーションが必要であり、予約済みノードを使用してスケジュールされます。

GPU-HPN の前提条件

作業を開始する前に、以下の準備が完了していることを確認してください。

  • 分散 Argo ワークフロー向けの ACK マネージドクラスター、ACK One 登録済みクラスター、または ACK One Kubernetes クラスターがあること。

  • GPU-HPN キャパシティリザベーションを購入済みであり、ご利用のクラスターに関連付け済みであること。

  • kube-scheduler および ACK Virtual Node コンポーネントを GPU-HPN 対応バージョンに更新済みであること(招待プレビュー段階。必要なバージョンについてはチケットを送信してください)。

GPU-HPN Pod のラベル

labels:
  alibabacloud.com/compute-class: gpu-hpn                # 計算クラスを gpu-hpn に設定。
  alibabacloud.com/compute-qos: default                  # QoS クラス。

例:nodeSelector を使用した GPU-HPN Pod

重要

ACS GPU-HPN Pod を構成する際は、以下の点にご注意ください。

  • alibabacloud.com/compute-classgpu-hpn に設定します。

  • nodeSelector alibabacloud.com/node-typereserved に設定します。

  • requests および limits は、ご利用の GPU モデルに基づいて設定します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-hpn-demo
  labels:
    app: gpu-hpn-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-hpn-demo
  template:
    metadata:
      labels:
        app: gpu-hpn-demo
        alibabacloud.com/compute-class: gpu-hpn
        alibabacloud.com/compute-qos: default
    spec:
      nodeSelector:
        alibabacloud.com/node-type: reserved             # GPU-HPN 予約済みノードを対象とする。
      containers:
      - name: gpu-hpn-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 モデルに基づいて調整。

GPU-HPN Pod のステータス確認

kubectl get pod gpu-hpn-demo-9cdf7bbf9-s**** -oyaml

Pod が実行中であり、GPU リソースが割り当てられていることを確認します。

phase: Running

    resources:
      limits:
        nvidia.com/gpu: "1"
      requests:
        nvidia.com/gpu: "1"

参照情報