Tous les produits
Search
Centre de documentation

Container Compute Service:Use ACS computing power in an ACK Pro cluster

Dernière mise à jour :Sep 29, 2026

Alibaba Cloud Container Compute Service (ACS) s'intègre à Container Service for Kubernetes. Un cluster ACK Pro vous permet d'accéder rapidement à la puissance de calcul de conteneurs fournie par ACS. Cette rubrique explique comment exploiter cette puissance de calcul ACS au sein de votre cluster ACK.

Fonctionnement

Container Compute Service (ACS) est un service de conteneurs qui utilise Kubernetes comme interface utilisateur et fournit des ressources de calcul conformes aux spécifications des conteneurs. Son architecture en couches sépare le plan de contrôle Kubernetes de la puissance de calcul sous-jacente des conteneurs. La couche de ressources de calcul ACS planifie et alloue les ressources pour les Pods, tandis que Kubernetes gère les charges de travail applicatives telles que les Deployments, Services, StatefulSets et CronJobs au-dessus de cette couche.

Vous pouvez connecter la puissance de calcul de conteneurs ACS à un cluster Kubernetes sous forme de nœud virtuel. Votre cluster bénéficie ainsi d'une élasticité importante, sans être limité par la capacité de calcul de ses nœuds. Lorsque ACS prend en charge la gestion de l'infrastructure sous-jacente des Pods, Kubernetes n'a plus besoin de gérer directement le placement et le démarrage de chaque Pod, ni de surveiller l'état des ressources des machines virtuelles sous-jacentes. ACS garantit la disponibilité permanente des ressources nécessaires aux Pods.

Container Service for Kubernetes (ACK) figure parmi les premières plateformes Kubernetes certifiées au monde et offre un service de gestion hautes performances pour les applications conteneurisées. Il s'appuie sur les capacités de virtualisation, de stockage, de réseau et de sécurité d'Alibaba Cloud afin de simplifier la création et la mise à l'échelle des clusters. Vous pouvez ainsi vous concentrer sur le développement et la gestion de vos applications conteneurisées.

Dans un cluster ACK Pro, déployez manuellement un nœud virtuel avant de créer des Pods ACS. Lorsque votre cluster doit monter en charge, créez des Pods ACS sur le nœud virtuel à la demande, sans avoir à planifier la capacité des nœuds. Les Pods ACS peuvent communiquer avec les Pods situés sur les nœuds classiques du cluster. Pour les charges de travail de longue durée dont le trafic fluctue, nous vous recommandons de les planifier sur le nœud virtuel. Cette approche optimise l'utilisation des ressources, raccourcit les délais de mise à l'échelle et réduit les coûts. Dès que le trafic diminue, libérez rapidement ces Pods pour faire baisser la facture. Chaque Pod d'un nœud virtuel s'exécute comme une instance ACS dans un environnement de conteneurs sécurisé et isolé. Pour plus d'informations, consultez Présentation d'ACK.

image

Prérequis

  • S'il s'agit de votre première utilisation du service, activez les services requis et accordez les permissions nécessaires :

    • Activez Container Service for Kubernetes, accordez les permissions aux rôles par défaut et activez les services cloud requis. Pour plus d'informations, consultez Créer un cluster ACK Pro.

    • Connectez-vous à la console Container Compute Service et suivez les instructions à l'écran pour activer ACS.

  • Un cluster ACK Pro exécutant Kubernetes 1.26 ou une version ultérieure est nécessaire. Pour plus d'informations, consultez Créer un cluster ACK Pro. Pour savoir comment mettre à niveau un cluster, consultez Mettre à niveau un cluster ACK.

  • Pour les clusters ACK Pro, le composant de nœud virtuel (ACK Virtual Node) doit respecter la version correspondant à celle de Kubernetes.

    Version de Kubernetes

    Version du composant ACK Virtual Node

    1,26 ou ultérieure

    v2.13.0 ou ultérieure

Installer le composant ACK Virtual Node

Suivez les étapes ci-dessous :

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .

  3. Sous l'onglet Core Components, recherchez le composant ACK Virtual Node, puis cliquez sur Install ou sur Upgrade pour passer à la version requise.

    Accédez également à la page Component Management en choisissant Operations > Component Management dans le volet de navigation de gauche de la page de détails du cluster.

  4. Si le système vous invite à Activate and Authorize ACS avant l'installation d'ACK Virtual Node, suivez les instructions à l'écran. Une fois ACS activé et les permissions accordées, cliquez sur OK pour poursuivre l'installation.

  5. Une fois l'installation terminée, choisissez Nodes > Nodes dans le volet de navigation de gauche. Par défaut, le nom du nouveau nœud virtuel commence par virtual-kubelet-.

Exemple : utiliser la puissance de calcul CPU d'ACS

Une fois le composant ACK Virtual Node installé ou mis à niveau vers la version indiquée dans les Prérequis, il prend en charge à la fois la puissance de calcul ACS et ECI.

Remarque

Lorsque vous planifiez un Pod sur un nœud virtuel, la puissance de calcul Elastic Container Instance (ECI) est utilisée par défaut, sauf si vous spécifiez ACS.

Pour exploiter la puissance de calcul CPU d'ACS dans ACK, procédez comme suit :

  1. Planifiez les Pods sur le nœud virtuel à l'aide de méthodes telles que nodeSelector, affinity, ResourcePolicy, ou en ajoutant le libellé alibabacloud.com/acs: "true". Pour plus d'informations, consultez Affinité de nœud.

    Remarque

    La planification via le libellé alibabacloud.com/acs: "true" n'est pas prise en charge dans les clusters ACK Serverless. Elle fonctionne actuellement sur les clusters ACK Pro, les clusters ACK dédiés, les clusters enregistrés ACK One et les clusters ACK Edge.

  2. Définissez le type d'instance du Pod ACS à l'aide du libellé alibabacloud.com/compute-class:<compute-type>. Pour en savoir plus sur les types d'instances ACS, consultez Instances de Pod ACS.

Les étapes suivantes présentent un exemple détaillé :

  1. Déployez un Deployment.

    Important

    Si vous planifiez les Pods en ajoutant le libellé alibabacloud.com/acs: "true", les StorageClasses de type WaitForFirstConsumer ne sont pas prises en charge. Par conséquent, lorsque vous utilisez la puissance de calcul ACS dans un cluster ACK et qu'un Pod ACS doit monter un disque cloud, planifiez ce Pod sur un nœud virtuel via nodeSelector ou ResourcePolicy. Pour savoir comment configurer ResourcePolicy, consultez Les clusters ACK Pro prennent en charge la planification hybride de la puissance de calcul ECS et ACS.

    NodeSelector

    1. Exécutez la commande suivante pour consulter les libellés du nœud virtuel. Remplacez virtual-kubelet-cn-hangzhou-k par le nom de votre nœud virtuel.

      kubectl get node virtual-kubelet-cn-hangzhou-k -oyaml

      L'extrait suivant correspond à la section labels de la sortie :

      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 # Use this label to schedule Pods to virtual nodes.
        name: virtual-kubelet-cn-hangzhou-k
      spec:
        taints:
        - effect: NoSchedule
          key: virtual-kubelet.io/provider
          value: alibabacloud 
    2. Créez un fichier nommé nginx.yaml contenant le code suivant afin de déployer deux Pods.

      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 # Specify the compute class for the ACS Pod. Default: general-purpose.
              alibabacloud.com/compute-qos: default # Specify the QoS class for the ACS Pod. Default: default.
          spec:
            nodeSelector:
              type: virtual-kubelet # Schedule Pods to a virtual node.
            tolerations:
            - key: "virtual-kubelet.io/provider" # Tolerate the taint on the virtual node. 
              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. Créez l'application NGINX et vérifiez le résultat du déploiement.

      1. Exécutez la commande suivante pour créer l'application NGINX.

        kubectl apply -f nginx.yaml 
      2. Exécutez la commande suivante pour vérifier le résultat du déploiement.

        kubectl get pods -o wide

        Sortie attendue :

        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>

        Cette sortie indique que le nodeSelector a planifié les deux Pods sur des nœuds portant le label type=virtual-kubelet.

    Planification par libellé de Pod

    1. Créez un fichier nommé nginx.yaml avec le contenu suivant.

      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" # Configure the Pod to use ACS computing power.
              alibabacloud.com/compute-class: general-purpose # Specify the compute class for the ACS Pod. Default: general-purpose.
              alibabacloud.com/compute-qos: default # Specify the QoS class for the ACS Pod. Default: default.
          spec:
            containers:
            - name: nginx
              image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
              resources:
                limits:
                  cpu: 2
                requests:
                  cpu: 2
    2. Créez l'application NGINX et vérifiez le résultat du déploiement.

      1. Exécutez la commande suivante pour créer l'application NGINX.

        kubectl apply -f nginx.yaml 
      2. Exécutez la commande suivante pour vérifier le résultat du déploiement.

        kubectl get pods -o wide

        Sortie attendue :

        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>

        La sortie confirme que les Pods sont planifiés sur des nœuds virtuels, conformément au alibabacloud.com/acs: "true" label.

  2. Consultez les détails d'un Pod NGINX pour confirmer qu'il s'agit bien d'une instance de Pod ACS.

    1. Exécutez la commande suivante pour afficher les détails d'un Pod NGINX.

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

      Sortie attendue (informations clé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

      L'annotation alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx confirme que le Pod est une instance de Pod ACS.

Exemple : utiliser la puissance de calcul GPU d'ACS

L'utilisation de la puissance de calcul GPU d'ACS suit un processus similaire à celui de la puissance de calcul CPU, mais elle exige des versions de composants spécifiques et quelques configurations supplémentaires.

Configuration des composants

Selon la version de Kubernetes de vos clusters ACK Pro, le composant kube-scheduler doit respecter les exigences de version suivantes.

Version de Kubernetes

Version de kube-scheduler

1.26 ou ultérieure

  • Pour les clusters 1.31, la version du planificateur doit être v1.31.0-aliyun.6.8.4.8f585f26 ou ultérieure.

  • Pour les clusters 1.30, la version du planificateur doit être v1.30.3-aliyun.6.8.4.946f90e8 ou ultérieure.

  • Pour les clusters 1.28, la version du planificateur doit être v1.28.12-aliyun-6.8.4.b27c0009 ou ultérieure.

  • Pour les clusters 1.26, la version du planificateur doit être v1.26.3-aliyun-6.8.4.4b180111 ou ultérieure.

Utilisation

...     
     labels:
        # Declare the ACS GPU resource requirement in the labels.
        alibabacloud.com/compute-class: gpu     # For GPU types, use the fixed value 'gpu'.
        alibabacloud.com/compute-qos: default   # The QoS class. This has the same meaning as for regular ACS computing power.
        alibabacloud.com/gpu-model-series: example-model  # The GPU model series. Replace with your actual model, such as T4.
...
Remarque
  1. Les exemples suivants illustrent trois méthodes différentes pour configurer la puissance de calcul GPU.

    NodeSelector

    Utilisez le YAML suivant pour créer une charge de travail 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 attributes
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # The GPU model series. Replace with your actual model, such as T4.
        spec:
          # Specify the label for the virtual node.
          nodeSelector:
            type: virtual-kubelet
          # Tolerate the virtual node's taint.
          tolerations:
          - key: "virtual-kubelet.io/provider" # Tolerate the taint on the virtual node.
            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

    Utilisez le YAML suivant pour créer une charge de travail 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  # The GPU model series. Replace with your actual model, such as T4.
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-rp-demo
      labels:
        app: dep-rp-demo
      annotations:
        resourcePolicy: "dep-rp-demo"  # Reference the name of the 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  # The GPU model series. Replace with your actual model, such as 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"

    Pour en savoir plus sur l'utilisation de ResourcePolicy pour la planification des ressources, consultez Planification personnalisée des priorités de ressources.

    Planification par libellé de Pod

    Utilisez le YAML suivant pour créer une charge de travail 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 attributes
            alibabacloud.com/acs: "true" # Configure the Pod to use ACS computing power.
            alibabacloud.com/compute-class: gpu
            alibabacloud.com/compute-qos: default
            alibabacloud.com/gpu-model-series: example-model  # The GPU model series. Replace with your actual model, such as 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. Exécutez la commande suivante pour vérifier l'état d'exécution de la charge de travail GPU.

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

    Sortie attendue (informations clés) :

        phase: Running
        resources:
          limits:
            #other resources
            nvidia.com/gpu: "1"
          requests:
            #other resources
            nvidia.com/gpu: "1"

Exemple : utiliser la puissance de calcul GPU HPN d'ACS

L'utilisation de la puissance de calcul GPU HPN d'ACS suit un processus similaire à celui de la puissance de calcul CPU, mais elle impose les conditions suivantes :

  • Cette fonctionnalité est uniquement prise en charge dans les clusters ACK Pro, les clusters enregistrés ACK One et les clusters de flux de travail distribués Argo ACK One.

  • Achetez au préalable des réservations de capacité GPU-HPN et associez-les à votre cluster.

  • La version de kube-scheduler doit répondre aux exigences suivantes :

    Version de Kubernetes

    Version de kube-scheduler

    1,28

    v1.28.12-aliyun-6.9.3.cd73f3fe ou ultérieure.

    1,30

    v1.30.3-aliyun.6.9.3.ce7e2faf ou ultérieure.

    1,31

    v1.31.0-aliyun.6.9.3.051bb0e8 ou ultérieure.

    1,32

    v1.32.0-aliyun.6.9.3.515ac311 ou ultérieure.

    1,33

    v1.33.0-aliyun.6.9.4.8b58e6b4 ou ultérieure.

  • Le composant ACK Virtual Node doit être en version v2.15.0 ou ultérieure.

Utilisation

...     
labels:
  # Declare the ACS GPU resource requirement in the labels.
  alibabacloud.com/compute-class: gpu-hpn     # Must be set to gpu-hpn.
  alibabacloud.com/compute-qos: default   # The QoS class. This has the same meaning as for regular ACS computing power.
...
Remarque
  • Pour en savoir plus sur les classes de calcul et les classes QoS d'ACS, consultez Relation entre les classes de calcul et les classes QoS.

  • Pour obtenir des informations sur les autres paramètres des Pods ACS, consultez Configurer un Pod ACS.

  • Un nœud GPU HPN ACS peut uniquement planifier des Pods de la classe de calcul gpu-hpn. Vous n'avez pas besoin de spécifier les besoins en ressources GPU dans la déclaration de ressources de ces Pods. Le nœud ne peut planifier ni les Pods d'autres classes de calcul, ni ceux pour lesquels aucune classe de calcul n'est déclarée.

  1. Utilisez un nodeSelector Kubernetes pour planifier des Pods sur des nœuds GPU HPN.

    Important

    Lors de la configuration d'un Pod GPU HPN ACS, prêtez attention aux champs suivants :

    • Définissez la classe de calcul : alibabacloud.com/compute-class: gpu-hpn.

    • Spécifiez le libellé de nœud réservé : alibabacloud.com/node-type: reserved.

    • Pour le nom de la ressource de périphérique dans les champs requests et limits d'une spécification de ressources, indiquez le nom correspondant au type réel de carte du périphérique, par exemple NVIDIA ou un autre fournisseur.

    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 attributes
            alibabacloud.com/compute-class: gpu-hpn
            alibabacloud.com/compute-qos: default
        spec:
          # Specify the label for GPU HPN reserved nodes.
          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" # Use the resource name that matches your actual GPU model.
              requests:
                cpu: 1
                memory: 1Gi
                nvidia.com/gpu: "1" # Use the resource name that matches your actual GPU model.
  2. Vérifiez l'état d'exécution de la charge de travail GPU.

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

    Sortie attendue (informations clés) :

        phase: Running
        resources:
          limits:
            #other resources
            nvidia.com/gpu: "1"
          requests:
            #other resources
            nvidia.com/gpu: "1"