Alibaba Cloud Container Service ofrece varias soluciones serverless para contenedores basadas en nodos virtuales y Elastic Container Instance (ECI). Por ejemplo, al desplegar el componente de nodo virtual de Container Service for Kubernetes (ACK), se integra Kubernetes con ECI de forma transparente. Esto permite crear pods ECI de manera flexible y dinámica bajo demanda, sin necesidad de planificar la capacidad del clúster.
Requisitos previos
Se creó una instancia de ASM versión 1.7.5.41 o posterior. Para obtener más información, consulte Create an ASM instance.
El componente ack-virtual-node está desplegado en el clúster de ACK y se ejecuta correctamente. Para obtener más información, consulte Step 1: Deploy the ack-virtual-node component.
The kubeconfig file of the cluster is obtained, and kubectl is used to connect to the cluster.
Paso 1: Habilitar la inyección automática de sidecar en el namespace objetivo
Cuando se habilita la inyección automática de sidecar para un namespace en la consola de ASM, se inyecta automáticamente un proxy Envoy como sidecar en cada pod creado dentro de ese namespace. Estos proxies Envoy conforman el plano de datos de la instancia de ASM.
En este ejemplo, se habilita la inyección automática de sidecar para los namespaces default y vk. El método 1 utiliza el namespace default, mientras que el método 2 emplea el namespace vk. Para obtener más información, consulte Manage global namespaces.
Paso 2: Crear una aplicación de pod ECI
Una vez creada la aplicación de pod ECI, ASM puede gestionar la aplicación en el plano de datos a través del sidecar inyectado.
Los siguientes dos métodos son alternativas. Elija uno según el alcance que desee para la etiqueta alibabacloud.com/eci=true:
Método 1: etiqueta de pod — Especifique la etiqueta al crear el pod; esta se aplicará únicamente a dicho pod.
Método 2: etiqueta de namespace — Agregue la etiqueta al namespace antes de crear el pod; así, la etiqueta se aplicará a todos los pods que cree en ese namespace.
Método 1: Crear una aplicación de pod ECI mediante la configuración de etiquetas de pod
Especifique la etiqueta alibabacloud.com/eci=true al crear el pod. De este modo, el pod se ejecutará como una instancia ECI en un nodo virtual.
-
Ejecute el siguiente comando para comprobar que el namespace
defaultcontiene la etiquetaistio-injection=enabled:kubectl get ns default --show-labelsSalida esperada:
NAME STATUS AGE LABELS default Active 16d istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asm -
Ejecute el siguiente comando para desplegar una aplicación Nginx:
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueSalida esperada:
pod/nginx created -
Ejecute el siguiente comando para consultar la información del pod en el nodo virtual:
kubectl get pod -n default -o wide|grep virtual-kubeletSalida esperada:
nginx 2/2 Running 0 8m49s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
El conteo de listos 2/2 en la salida indica que el sidecar inyectado se ejecuta junto con el contenedor de la aplicación. ASM gestiona el pod en el plano de datos.
Método 2: Crear una aplicación de pod ECI mediante la configuración de etiquetas de namespace
Agregue la etiqueta alibabacloud.com/eci=true al namespace antes de crear el pod. Los pods que cree posteriormente en ese namespace se ejecutarán como instancias ECI en un nodo virtual.
-
Ejecute el siguiente comando para comprobar que el namespace
vkcontiene la etiquetaistio-injection=enabled:kubectl get ns vk --show-labelsSalida esperada:
NAME STATUS AGE LABELS vk Active 96m istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asm -
Ejecute el siguiente comando para agregar la etiqueta al namespace
vk:kubectl label namespace vk alibabacloud.com/eci=trueSalida esperada:
namespace/vk labeled -
Ejecute el siguiente comando para desplegar una aplicación Nginx:
kubectl -n vk run nginx --image nginxSalida esperada:
pod/nginx created -
Ejecute el siguiente comando para consultar la información del pod en el nodo virtual:
kubectl -n vk get pod -o wide|grep virtual-kubeletSalida esperada:
nginx 2/2 Running 0 38s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
El conteo de listos 2/2 en la salida indica que el pod se ejecuta con el sidecar inyectado. ASM gestiona el pod en el plano de datos a través de este sidecar.