Todos os produtos
Search
Central de documentação

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

Última atualização: Sep 29, 2026

O Container Compute Service (ACS) da Alibaba Cloud é integrado ao Container Service for Kubernetes. Com um ACK Pro cluster, você acessa rapidamente o poder computacional de contêineres fornecido pelo ACS. Este tópico descreve como usar o poder computacional do ACS no seu cluster ACK.

Como funciona

O Container Compute Service (ACS) é um service de contêineres que utiliza o Kubernetes como interface 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 da camada de poder computacional subjacente. A camada de recursos computacionais do ACS é responsável pelo agendamento e alocação de recursos para os Pods, enquanto o Kubernetes gerencia as cargas de trabalho da aplicação — 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 cluster uma elasticidade elevada, sem restrições relacionadas à capacidade computacional dos nós. Quando o ACS assume o gerenciamento da infraestrutura subjacente dos Pods, o Kubernetes deixa de precisar lidar diretamente com o posicionamento e a inicialização de cada Pod ou monitorar o status de recursos das máquinas virtuais subjacentes. O ACS garante que os recursos de Pod necessários estejam sempre disponíveis.

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

Em um ACK Pro cluster, é necessário implantar manualmente um nó virtual antes de criar Pods do ACS. Quando o 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 se comunicam com Pods em nós regulares do cluster. Para cargas de trabalho de longa duração com tráfego variável, recomendamos agendá-las no nó virtual. Essa abordagem maximiza a utilização de recursos, reduz o tempo de escalonamento horizontal e diminui custos. Quando o tráfego cai, libere esses Pods rapidamente para reduzir ainda mais os custos. Cada Pod em um nó virtual é executado como uma instância ACS em um ambiente de contêiner seguro e isolado. Para mais informações, consulte Overview of ACK.

image

Pré-requisitos

  • Se esta for a primeira vez que você usa o service, ative os services necessários e conceda as permissões adequadas:

  • É necessário um ACK Pro cluster com Kubernetes 1.26 ou posterior. Para mais informações, consulte Create an ACK Pro cluster. Para saber como fazer upgrade de um cluster, consulte Upgrade an ACK cluster.

  • Em ACK Pro cluster s, 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

Execute as seguintes etapas:

  1. Faça login no ACK console. 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. Se você for solicitado a 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. O nome do novo nó virtual começa com virtual-kubelet- por padrão.

Exemplo: Use o poder computacional de CPU do ACS

Após instalar ou fazer upgrade do componente ACK Virtual Node para a versão especificada em Prerequisites, ele passará a suportar tanto o poder computacional do ACS quanto o 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 usar 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 Node affinity.

    Nota

    O agendamento pelo rótulo alibabacloud.com/acs: "true" não é suportado em ACK Serverless cluster s. Atualmente, é suportado em ACK Pro cluster s, ACK dedicated cluster s, ACK One registered cluster s e ACK Edge cluster s.

  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 do ACS, consulte ACS Pod instances.

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, quando usar o poder computacional do ACS em um cluster ACK e um Pod do ACS precisar montar um disco em cloud, agende o Pod para um nó virtual usando nodeSelector ou ResourcePolicy. Para mais informações sobre como configurar o ResourcePolicy, consulte ACK Pro clusters support hybrid scheduling of ECS and ACS computing power.

    NodeSelector

    1. Execute o comando a seguir 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 a seguir 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.

    Pod label scheduling

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

      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 a seguir 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 confirma que os Pods foram agendados para nós virtuais, conforme definido pelo alibabacloud.com/acs: "true" label.

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

    1. Execute o comando a seguir 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 do ACS.

Exemplo: Use o poder computacional de GPU do ACS

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

Configuração de componentes

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

Versão do Kubernetes

kube-scheduler version

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.

Utilização

...     
     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 formas diferentes de configurar o poder computacional de GPU.

    NodeSelector

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

    Use o YAML a seguir para criar uma carga de trabalho com 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 do ResourcePolicy para agendamento de recursos, consulte Custom resource priority scheduling.

    Pod label scheduling

    Use o YAML a seguir para criar uma carga de trabalho com 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 a seguir para verificar o status de execução da carga de trabalho com 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: Use o poder computacional de GPU HPN do ACS

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

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

  • É necessário adquirir GPU-HPN capacity reservations com antecedência e associá-los ao seu cluster.

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

    Versão do Kubernetes

    kube-scheduler version

    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.

Utilização

...     
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 as classes de computação e de QoS do ACS, consulte Relationship between compute classes and QoS classes.

  • Para informações sobre outros parâmetros dos Pods do ACS, consulte Configure an ACS Pod.

  • 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 pode agendar Pods de outras classes de computação nem Pods sem classe de computação 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 do nó reservado: alibabacloud.com/node-type: reserved.

    • Para o nome do recurso de dispositivo nos campos requests e limits de uma especificação de recursos, defina 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 com 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"