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

Container Service for Kubernetes:仮想ノードを使用して ACS でポッドをスケジュールする

最終更新日:Apr 24, 2025

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

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

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

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

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

前提条件

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

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

説明

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

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

  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 ポッドの計算クラス。
            alibabacloud.com/compute-qos: default # ACS ポッドの QoS クラス。
        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 つのポッドが type=virtual-kubelet ラベルを持つノードにデプロイされていることを示しています。これは、デプロイメント構成の nodeSelector パラメーターで指定されています。

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

    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

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

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