O Container Compute Service (ACS) integra-se a um cluster registrado por meio de nós virtuais. Implante nós virtuais em um cluster registrado para acessar o poder de computação de contêineres do ACS e crie pods sob demanda, sem planejar a capacidade de computação dos nós.
Como os nós virtuais fornecem poder de computação do ACS
O Container Compute Service (ACS) é um service de contêineres que utiliza o Kubernetes como interface e oferece recursos de computação 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 de computação de contêineres subjacente. A camada de recursos de computação do ACS agenda e aloca recursos para Pods, enquanto o Kubernetes gerencia as cargas de trabalho das aplicações, como Deployments, Services, StatefulSets e CronJobs, sobre essa camada.
Conecte o poder de computação de contêineres do ACS a um cluster Kubernetes como um nó virtual. Isso confere ao cluster alta elasticidade, sem as restrições da capacidade de computação dos nós físicos. Quando o ACS assume o gerenciamento da infraestrutura subjacente dos Pods, o Kubernetes não precisa lidar diretamente com o posicionamento e a inicialização de Pods individuais nem monitorar o status de recursos das máquinas virtuais subjacentes. O ACS garante a disponibilidade contínua dos recursos necessários para os Pods.
Em um cluster registrado, instale o add-on ack-virtual-node no Component Center para implantar nós virtuais e criar pods do ACS. Se o cluster precisar escalar horizontalmente, crie pods do ACS em nós virtuais sob demanda, sem planejar a capacidade de computação dos nós. Os pods do ACS comunicam-se pela rede com os pods nos nós físicos do cluster. Para mais informações, consulte Registered clusters.
Para otimizar o uso de recursos, reduzir o tempo de escala horizontal e diminuir custos, agende cargas de trabalho de longa duração com tráfego flutuante para nós virtuais. À medida que o tráfego diminuir, libere rapidamente os pods nos nós virtuais para reduzir os custos de uso.
Os pods em nós virtuais executam em um ambiente de runtime de contêiner seguro e isolado no ACS. Cada pod corresponde a uma instância do ACS.

Pré-requisitos
Criação de um cluster registrado conectado a um cluster Kubernetes em um data center ou em outro provedor de cloud. Recomenda-se o Kubernetes 1.24 ou posterior. Para mais informações, consulte Create an ACK One registered cluster.
Instalação do componente
ack-virtual-node, versão 2.13.0 ou posterior. Para mais informações, consulte Grant RAM permissions to the ack-virtual-node component e Install the ack-virtual-node component.
Exemplo: uso do poder de computação de CPU do ACS
A partir da versão 2.13.0, o add-on ack-virtual-node fornece tanto o poder de computação do ACS quanto o do Elastic Container Instance (ECI).
Ao agendar um Pod para um nó virtual, o sistema usa o poder de computação do Elastic Container Instance (ECI) por padrão, a menos que você especifique o ACS.
Para usar o poder de computação de CPU do ACS em um cluster registrado do ACK One, execute as etapas a seguir:
-
Crie um arquivo chamado
nginx.yamlcom 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" # Use ACS computing power. alibabacloud.com/compute-class: general-purpose # The compute class of the ACS pod. Default value: general-purpose. alibabacloud.com/compute-qos: default # The QoS class of the ACS pod. Default value: default. spec: containers: - name: nginx image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine ports: - containerPort: 80 protocol: TCP resources: limits: cpu: 2 requests: cpu: 2 -
Execute o comando a seguir para criar a aplicação NGINX.
kubectl apply -f nginx.yaml -
Verifique o status dos pods com o comando abaixo.
kubectl get pods -o wideSaída esperada:
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>Esses dois Pods são agendados para nós rotulados com
type=virtual-kubeletpor meio donodeSelector. -
Visualize os detalhes do pod NGINX com o comando a seguir.
kubectl describe pod nginx-54bcbc9b66-****Saída esperada:
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-shanghaiA anotação
alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****na saída confirma que se trata de um pod do ACS.
Exemplo: uso do poder de computação de gpu do ACS
O processo para usar o poder de computação de gpu do ACS assemelha-se ao uso de CPU, mas exige versões específicas de componentes e configurações adicionais.
O poder de computação de gpu do ACS em um cluster registrado está em preview por convite. Para solicitar acesso, envie um ticket.
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.
...
Para mais informações sobre classes de computação e qualidade do poder de computação do ACS, consulte Mappings between compute types and computing power quality classes.
Para ver os modelos de gpu disponíveis para
gpu-model-series, consulte Specify GPU models and driver versions for ACS GPU-accelerated Pods.
Para usar o poder de computação de gpu do ACS em um cluster registrado do ACK One, siga estas etapas:
-
Crie um arquivo chamado
gpu-demo.yamlcom o seguinte conteúdo.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" # 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 the value with the 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" -
Execute o comando a seguir para criar a carga de trabalho de gpu.
kubectl apply -f gpu-demo.yaml -
Verifique o status de execução da carga de trabalho de gpu com o comando abaixo.
kubectl get pod dep-node-selector-demo-9cdf7bbf9-s**** -o yamlSaída esperada:
phase: Running resources: limits: #other resources nvidia.com/gpu: "1" requests: #other resources nvidia.com/gpu: "1"