Container Compute Service (ACS) se integra a un clúster registrado por medio de nodos virtuales. Despliegue nodos virtuales en un clúster registrado para acceder a la capacidad de cómputo de contenedores que ofrece ACS y cree pods bajo demanda sin planificar la capacidad de cómputo de los nodos.
Cómo los nodos virtuales proporcionan la capacidad de cómputo de ACS
Container Compute Service (ACS) es un servicio de contenedores que utiliza Kubernetes como interfaz de usuario y proporciona recursos de cómputo compatibles con las especificaciones de contenedores. ACS emplea una arquitectura en capas que separa el plano de control de Kubernetes de la capacidad de cómputo de contenedores subyacente. La capa de recursos de cómputo de ACS se encarga de programar y asignar recursos para los pods, mientras que Kubernetes gestiona las cargas de trabajo de las aplicaciones, como Deployments, Services, StatefulSets y CronJobs, sobre esta capa.
La capacidad de cómputo de contenedores de ACS se conecta a un clúster de Kubernetes como un nodo virtual. Esto le otorga al clúster una gran elasticidad, sin las limitaciones de la capacidad de cómputo de sus nodos. Cuando ACS asume la gestión de la infraestructura subyacente de los pods, Kubernetes ya no necesita gestionar directamente la ubicación ni el inicio de cada pod, ni supervisar el estado de los recursos de las máquinas virtuales subyacentes. ACS garantiza que los recursos necesarios para los pods estén siempre disponibles.
En un clúster registrado, instale el complemento ack-virtual-node desde Component Center para desplegar nodos virtuales y crear pods de ACS. Cuando el clúster necesite escalar horizontalmente, cree pods de ACS en los nodos virtuales bajo demanda, sin planificar la capacidad de cómputo de los nodos. Los pods de ACS se comunican por red con los pods ubicados en los nodos físicos del clúster. Para obtener más información, consulte Registered clusters.
Para usar los recursos de manera más eficiente, reducir los tiempos de escalado horizontal y disminuir costos, programe en nodos virtuales las cargas de trabajo de ejecución prolongada cuyo tráfico fluctúe de forma elástica. A medida que el tráfico disminuya, libere rápidamente los pods de los nodos virtuales para reducir los costos de uso.
Los pods de los nodos virtuales se ejecutan en un entorno de ejecución de contenedores seguro y aislado dentro de ACS. Cada pod corresponde a una instancia de ACS.

Requisitos previos
Creó un clúster registrado y lo conectó a un clúster de Kubernetes en un centro de datos o en otro proveedor de nube. Se recomienda usar Kubernetes 1.24 o posterior. Para obtener más información, consulte Create an ACK One registered cluster.
Instaló el componente
ack-virtual-nodeen la versión 2.13.0 o posterior. Para obtener más información, consulte Grant RAM permissions to the ack-virtual-node component y Install the ack-virtual-node component.
Ejemplo: uso de la capacidad de cómputo de CPU de ACS
A partir de la versión 2.13.0, el complemento ack-virtual-node proporciona capacidad de cómputo tanto de ACS como de Elastic Container Instance (ECI).
Cuando programa un pod en un nodo virtual, Elastic Container Instance (ECI) usa de forma predeterminada la capacidad de cómputo, a menos que especifique ACS.
Para usar la capacidad de cómputo de CPU de ACS en un clúster registrado de ACK One, siga estos pasos:
-
Cree un archivo llamado
nginx.yamlcon el siguiente contenido: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 -
Ejecute el siguiente comando para crear la aplicación NGINX.
kubectl apply -f nginx.yaml -
Ejecute el siguiente comando para comprobar el estado de los pods.
kubectl get pods -o wideResultado esperado:
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>Estos dos pods se programan en nodos etiquetados con
type=virtual-kubeletmediantenodeSelector. -
Ejecute el siguiente comando para consultar los detalles del pod de NGINX.
kubectl describe pod nginx-54bcbc9b66-****Resultado esperado:
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-shanghaiLa anotación
alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****en el resultado confirma que se trata de un pod de ACS.
Ejemplo: uso de la capacidad de cómputo de GPU de ACS
El proceso para usar la capacidad de cómputo de GPU de ACS es similar al de la capacidad de cómputo de CPU de ACS, pero requiere versiones específicas de componentes y cierta configuración adicional.
La capacidad de cómputo de GPU de ACS en un clúster registrado se encuentra en vista previa por invitación. Para solicitar acceso, envíe un 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 obtener más información sobre las clases de cómputo de ACS y la calidad de la capacidad de cómputo, consulte Mappings between compute types and computing power quality classes.
Para conocer los modelos de GPU disponibles para
gpu-model-series, consulte Specify GPU models and driver versions for ACS GPU-accelerated Pods.
Para usar la capacidad de cómputo de GPU de ACS en un clúster registrado de ACK One, siga estos pasos:
-
Cree un archivo llamado
gpu-demo.yamlcon el siguiente contenido.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" -
Ejecute el siguiente comando para crear la carga de trabajo de GPU.
kubectl apply -f gpu-demo.yaml -
Ejecute el siguiente comando para comprobar el estado de ejecución de la carga de trabajo de GPU.
kubectl get pod dep-node-selector-demo-9cdf7bbf9-s**** -o yamlResultado esperado:
phase: Running resources: limits: #other resources nvidia.com/gpu: "1" requests: #other resources nvidia.com/gpu: "1"