このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

ACK Pro クラスターで ACS の計算能力を使用する

更新日時2025-04-07 16:36

Container Compute Service (ACS)Container Service for Kubernetes に統合されています。これにより、ACK Pro マネージドクラスター で ACS の計算能力を使用できます。このトピックでは、ACK Pro クラスターで ACS の計算能力を使用する方法について説明します。

ACK Pro クラスターで ACS の計算能力を使用する方法

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

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

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

ACK Pro マネージドクラスター に ACS Pod を作成する前に、クラスターに仮想ノードをデプロイする必要があります。ACK Pro クラスターをスケールアウトする必要がある場合は、仮想ノードのリソース容量を計画することなく、仮想ノードに ACS Pod を作成できます。ACS Pod は、クラスター内の物理ノード上の Pod と通信できます。ワークロードが定期的に変動する長期実行アプリケーションを仮想ノードにデプロイすることをお勧めします。これにより、リソース使用率が向上し、リソースコストが削減され、スケーリングプロセスが高速化されます。アプリケーションのワークロードが減少した場合は、仮想ノードから Pod を削除してリソースコストを削減できます。仮想ノード上の Pod は、ACS 上に構築された安全で隔離された環境で実行されます。この場合、Pod は ACS Pod と呼ばれます。詳細については、「ACK クラスターの概要」をご参照ください。

前提条件

  • ACK Pro クラスターで ACS の計算能力を使用するには、まず必要なクラウドサービスをアクティブ化し、必要な権限を付与する必要があります。

    • Container Service for Kubernetes をアクティブ化し、ACS にデフォルトのロールを割り当て、その他の必要なクラウドサービスをアクティブ化します。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。

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

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

  • ACK Pro マネージドクラスター の Kubernetes バージョンに基づいて、特定のバージョンの [ACK Virtual Node] コンポーネントをインストールする必要があります。次の表に、バージョンのマッピングの詳細を示します。

    Kubernetes バージョン

    ACK Virtual Node バージョン

    Kubernetes バージョン

    ACK Virtual Node バージョン

    ≥ 1.26

    ≥ v2.13.0

ACK Virtual Node をインストールして ACS の計算能力を実装する

ACS の計算能力は、仮想ノードを使用して ACK クラスターに実装できます。このように、Kubernetes クラスターは高い弾力性を備え、クラスターノードの計算能力によって制限されなくなります。次のセクションでは、SFTP を使用してファイルを転送する方法について説明します。

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

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

  3. [コアコンポーネント] タブで、[ACK Virtual Node] を選択し、[インストール] をクリックしてコンポーネントをインストールするか、[更新] をクリックしてコンポーネントを必要なバージョンに更新します。

    image

  4. [ACK Virtual Node] をインストールするときに、コンソールから [ACS をアクティブ化して権限を付与する] よう求められた場合は、画面の指示に従って ACS をアクティブ化して権限を付与します。[OK] をクリックします。

  5. コンポーネントをインストールした後、クラスター詳細ページの左側のナビゲーションウィンドウで [ノード] > [ノード] を選択します。デフォルトでは、仮想ノードの名前にはプレフィックスとして virtual-kubelet- が付いています。

    image

前提条件 セクションの説明に従って、必要なバージョンの [ACK Virtual Node] をインストールするか、コンポーネントを必要なバージョンに更新した後、ACS Pod とエラスティックコンテナインスタンスを作成できます。

説明

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

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

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

    説明

    alibabacloud.com/acs: "true" ラベルは、サーバーレス Kubernetes クラスター には適用されません。次のクラスターに適用されます。ACK マネージドクラスター専用クラスターACK One 登録済みクラスターACK Edge クラスター

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

次のセクションでは、SFTP を使用してファイルを転送する方法について説明します。

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

    NodeSelector
    Pod ラベルに基づいて Pod をスケジュールする
    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 を仮想ノードにスケジュールする場合は、このラベルを Pod のノードセレクターとして構成できます。
        name: virtual-kubelet-cn-hangzhou-k
      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: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
              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-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 が 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: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    2. 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-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 が type=virtual-kubelet ラベル を持つノードにデプロイされていることがわかります。これは、デプロイメント構成の nodeSelector パラメーターで指定されています。

  2. NGINX アプリケーション用に 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

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

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

コンポーネントを構成する

ACK Pro マネージドクラスター の Kubernetes バージョンに基づいて、特定のバージョンの Kube-scheduler コンポーネントをインストールする必要があります。次の表に、バージョンのマッピングの詳細を示します。

Kubernetes バージョン

スケジューラバージョン

Kubernetes バージョン

スケジューラバージョン

≥ 1.26

Kubernetes のさまざまなバージョンに対応するスケジューラバージョン:

  • Kubernetes 1.31 のスケジューラバージョン: v1.31.0-aliyun.6.8.4.8f585f26 以降。

  • Kubernetes 1.30 のスケジューラバージョン: v1.30.3-aliyun.6.8.4.946f90e8 以降。

  • Kubernetes 1.28 のスケジューラバージョン: v1.28.12-aliyun-6.8.4.b27c0009 以降。

  • Kubernetes 1.26 のスケジューラバージョン: v1.26.3-aliyun-6.8.4.4b180111 以降。

アクティブ化する方法

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

この機能の使用方法

...     
     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
    ResourcePolicy
    Pod ラベルに基づいて Pod をスケジュールする

    次のコンテンツに基づいて、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" # 仮想ノードを許容するために使用される許容。
            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"

    次のコンテンツに基づいて、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
        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 を使用してリソースをスケジュールする方法の詳細については、「カスタム優先順位に基づくリソーススケジューリング」をご参照ください。

    次のコンテンツに基づいて、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"
  • 目次 (0, M)
  • ACK Pro クラスターで ACS の計算能力を使用する方法
  • 前提条件
  • ACK Virtual Node をインストールして ACS の計算能力を実装する
  • コンポーネントを構成する
  • アクティブ化する方法
  • この機能の使用方法
フィードバック
phone お問い合わせ

Chat now with Alibaba Cloud Customer Service to assist you in finding the right products and services to meet your needs.

alicare alicarealicarealicare