Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 29, 2026

O Alibaba Cloud Container Compute Service (ACS) está integrado ao Container Service for Kubernetes. Você pode usar um cluster ACK Pro para acessar rapidamente o poder computacional de contêineres fornecido pelo ACS. Este tópico descreve como utilizar o poder computacional do ACS no seu cluster ACK.

Como funciona

O Container Compute Service (ACS) é um serviço de contêineres que utiliza o Kubernetes como interface de usuário e fornece recursos computacionais compatíveis com especificações de contêineres. O ACS adota uma arquitetura em camadas que separa o plano de controle do Kubernetes do poder computacional subjacente dos contêineres. A camada de recursos computacionais do ACS é responsável por agendar e alocar recursos para os Pods, enquanto o Kubernetes gerencia as cargas de trabalho das aplicações, como Deployments, Services, StatefulSets e CronJobs, sobre essa camada.

É possível conectar o poder computacional de contêineres do ACS a um cluster Kubernetes como um nó virtual. Isso confere ao seu cluster uma elasticidade robusta, sem as restrições da capacidade computacional de seus nós físicos. Quando o ACS assume o gerenciamento da infraestrutura subjacente para os Pods, o Kubernetes não precisa mais lidar diretamente com o posicionamento e a inicialização de Pods individuais, nem monitorar o status dos recursos das máquinas virtuais subjacentes. O ACS garante que os recursos necessários para os Pods estejam sempre disponíveis.

O Container Service for Kubernetes (ACK) é uma das primeiras plataformas Kubernetes certificadas do mundo e oferece um serviço de gerenciamento de alto desempenho para aplicações em contêineres. Ele se integra às capacidades de virtualização, armazenamento, rede e segurança do Alibaba Cloud para simplificar a criação e o dimensionamento de clusters, permitindo que você foque no desenvolvimento e na gestão das suas aplicações conteinerizadas.

Em um cluster ACK Pro, é necessário implantar manualmente um nó virtual antes de criar Pods do ACS. Quando seu cluster precisar escalar horizontalmente, crie Pods do ACS no nó virtual sob demanda, sem a necessidade de planejar a capacidade dos nós. Os Pods do ACS podem se comunicar com Pods em nós regulares do cluster. Para cargas de trabalho de longa duração com tráfego flutuante, recomendamos agendá-las no nó virtual. Essa abordagem maximiza a utilização de recursos, reduz o tempo de escala horizontal e diminui custos. Quando o tráfego diminuir, libere esses Pods rapidamente para reduzir despesas. Cada Pod em um nó virtual executa como uma instância ACS dentro de um ambiente de contêiner seguro e isolado. Para mais informações, consulte Visão geral do ACK.

image

Pré-requisitos

  • Se esta for sua primeira vez utilizando o serviço, ative os serviços necessários e conceda as permissões adequadas:

  • É necessário ter um cluster ACK Pro executando Kubernetes 1.26 ou posterior. Para mais informações, consulte Criar um cluster ACK Pro. Para saber como atualizar um cluster, consulte Atualizar um cluster ACK.

  • Para clusters ACK Pro, o componente de nó virtual (ACK Virtual Node) deve atender ao requisito de versão correspondente à versão do Kubernetes.

    Versão do Kubernetes

    Versão do componente ACK Virtual Node

    1.26 ou posterior

    v2.13.0 ou posterior

Instale o componente ACK Virtual Node

Siga as etapas abaixo:

  1. Acesse o console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons.

  3. Na aba Core Components, localize o componente ACK Virtual Node e clique em Install ou Upgrade para a versão necessária.

    Você também pode acessar a página de Gerenciamento de Componentes escolhendo Operations > Component Management no painel de navegação à esquerda da página de detalhes do cluster.

  4. Caso receba uma solicitação para Activate and Authorize ACS antes de instalar o ACK Virtual Node, siga as instruções na tela. Após ativar o ACS e conceder as permissões necessárias, clique em OK para prosseguir com a instalação.

  5. Após a conclusão da instalação, escolha Nodes > Nodes no painel de navegação à esquerda. Por padrão, o nome do novo nó virtual começa com virtual-kubelet-.

Exemplo: Uso do poder computacional de CPU do ACS

Depois que o componente ACK Virtual Node for instalado ou atualizado para a versão especificada nos Pré-requisitos, ele suportará tanto o poder computacional do ACS quanto do ECI.

Nota

Ao agendar um Pod para um nó virtual, o poder computacional do Elastic Container Instance (ECI) é usado por padrão, a menos que você especifique o ACS.

Para utilizar o poder computacional de CPU do ACS no ACK, execute as seguintes etapas:

  1. Agende Pods para o nó virtual usando métodos como nodeSelector, affinity, ResourcePolicy ou adicionando o rótulo alibabacloud.com/acs: "true". Para mais informações, consulte Afinidade de nó.

    Nota

    O agendamento via rótulo alibabacloud.com/acs: "true" não é suportado em clusters ACK Serverless. Atualmente, há suporte para clusters ACK Pro, clusters dedicados ACK, clusters registrados ACK One e clusters ACK Edge.

  2. Especifique o tipo de instância para o Pod do ACS usando o rótulo alibabacloud.com/compute-class:<compute-type>. Para mais informações sobre os tipos de instância ACS, consulte Instâncias de Pod ACS.

As etapas a seguir apresentam um exemplo detalhado:

  1. Implante um Deployment.

    Importante

    Se você agendar Pods adicionando o rótulo alibabacloud.com/acs: "true", StorageClasses do tipo WaitForFirstConsumer não são suportadas. Portanto, ao usar o poder computacional do ACS em um cluster ACK onde um Pod ACS precisa montar um disco em nuvem, agende o Pod para um nó virtual usando nodeSelector ou ResourcePolicy. Para mais informações sobre como configurar o ResourcePolicy, consulte Clusters ACK Pro suportam agendamento híbrido de poder computacional ECS e ACS.

    NodeSelector

    1. Execute o comando abaixo para visualizar os rótulos do nó virtual. Substitua virtual-kubelet-cn-hangzhou-k pelo nome do seu nó virtual.

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

      A saída a seguir é um trecho da seção 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 # 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. Crie um arquivo chamado nginx.yaml com o conteúdo a seguir para implantar dois 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. Crie a aplicação NGINX e verifique o resultado da implantação.

      1. Execute o comando abaixo para criar a aplicação NGINX.

        kubectl apply -f nginx.yaml 
      2. Execute o comando a seguir para verificar o resultado da implantação.

        kubectl get pods -o wide

        Saída esperada:

        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>

        A saída mostra que o nodeSelector agendou os dois Pods para nós com o label type=virtual-kubelet.

    Agendamento por rótulo de Pod

    1. Crie um arquivo chamado nginx.yaml com o seguinte conteúdo.

      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. Crie a aplicação NGINX e verifique o resultado da implantação.

      1. Execute o comando abaixo para criar a aplicação NGINX.

        kubectl apply -f nginx.yaml 
      2. Execute o comando a seguir para verificar o resultado da implantação.

        kubectl get pods -o wide

        Saída esperada:

        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>

        A saída indica que os Pods foram agendados para nós virtuais, conforme especificado pelo alibabacloud.com/acs: "true" label.

  2. Visualize os detalhes de um Pod NGINX para confirmar que se trata de uma instância de Pod ACS.

    1. Execute o comando abaixo para visualizar os detalhes de um Pod NGINX.

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

      Saída esperada (informações principais):

      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

      A anotação alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx confirma que o Pod é uma instância de Pod ACS.

Exemplo: Uso do poder computacional de GPU do ACS

O processo para usar o poder computacional de GPU do ACS é semelhante ao uso de CPU do ACS, mas exige versões específicas de componentes e algumas configurações adicionais.

Configuração de componentes

Para clusters ACK Pro de diferentes versões do Kubernetes, o componente kube-scheduler deve atender aos seguintes requisitos de versão.

Versão do Kubernetes

Versão do kube-scheduler

1.26 ou posterior

  • Para clusters 1.31, a versão do scheduler deve ser v1.31.0-aliyun.6.8.4.8f585f26 ou posterior.

  • Para clusters 1.30, a versão do scheduler deve ser v1.30.3-aliyun.6.8.4.946f90e8 ou posterior.

  • Para clusters 1.28, a versão do scheduler deve ser v1.28.12-aliyun-6.8.4.b27c0009 ou posterior.

  • Para clusters 1.26, a versão do scheduler deve ser v1.26.3-aliyun-6.8.4.4b180111 ou posterior.

Uso

...     
     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.
...
Nota
  1. Os exemplos a seguir mostram três maneiras diferentes de configurar o poder computacional de GPU.

    NodeSelector

    Utilize o YAML a seguir para criar uma carga de trabalho de 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

    Utilize o YAML a seguir para criar uma carga de trabalho de 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"

    Para mais informações sobre o uso de ResourcePolicy para agendamento de recursos, consulte Agendamento personalizado de prioridade de recursos.

    Agendamento por rótulo de Pod

    Utilize o YAML a seguir para criar uma carga de trabalho de 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. Execute o comando abaixo para verificar o status de execução da carga de trabalho de GPU.

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

    Saída esperada (informações principais):

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

Exemplo: Uso do poder computacional de GPU HPN do ACS

O processo para usar o poder computacional de GPU HPN do ACS é semelhante ao uso de CPU do ACS, mas com os seguintes requisitos:

  • Este recurso é suportado apenas em clusters ACK Pro, clusters registrados ACK One e clusters Argo de fluxo de trabalho distribuído ACK One.

  • É necessário adquirir antecipadamente as reservas de capacidade GPU-HPN e associá-las ao seu cluster.

  • A versão do kube-scheduler deve atender aos seguintes requisitos:

    Versão do Kubernetes

    Versão do kube-scheduler

    1.28

    v1.28.12-aliyun-6.9.3.cd73f3fe ou posterior.

    1.30

    v1.30.3-aliyun.6.9.3.ce7e2faf ou posterior.

    1.31

    v1.31.0-aliyun.6.9.3.051bb0e8 ou posterior.

    1.32

    v1.32.0-aliyun.6.9.3.515ac311 ou posterior.

    1.33

    v1.33.0-aliyun.6.9.4.8b58e6b4 ou posterior.

  • O componente ACK Virtual Node deve ser v2.15.0 ou posterior.

Uso

...     
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.
...
Nota
  • Para mais informações sobre classes de computação e classes de QoS do ACS, consulte Relação entre classes de computação e classes de QoS.

  • Para informações sobre outros parâmetros para Pods ACS, consulte Configurar um Pod ACS.

  • Um nó ACS GPU HPN só pode agendar Pods da classe de computação gpu-hpn. Não é necessário especificar requisitos de recursos de GPU na declaração de recursos do Pod para esses Pods. O nó não consegue agendar Pods de outras classes de computação ou Pods para os quais nenhuma classe de computação foi declarada.

  1. Use um nodeSelector do Kubernetes para agendar Pods para nós GPU HPN.

    Importante

    Ao configurar um Pod ACS GPU HPN, observe os seguintes campos:

    • Especifique a classe de computação: alibabacloud.com/compute-class: gpu-hpn.

    • Especifique o rótulo de nó reservado: alibabacloud.com/node-type: reserved.

    • Para o nome do recurso de dispositivo nos campos requests e limits de uma especificação de recurso, especifique o nome com base no tipo real da placa do dispositivo, como NVIDIA ou outros.

    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. Verifique o status de execução da carga de trabalho de GPU.

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

    Saída esperada (informações principais):

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