Elastic Container Instance (ECI) proporciona el entorno de ejecución de contenedores para los pods en Kubernetes, mientras que Kubernetes ofrece funciones como dependencias de servicios, balanceo de carga, escalado elástico y programación periódica. Este tema describe cómo Container Service for Kubernetes (ACK) se integra con ECI para utilizar ECI como recurso de cómputo de los pods.
Métodos de integración
ECI ofrece una solución jerárquica para Kubernetes: ECI gestiona la programación y administración de los recursos de contenedores de los pods en la capa de infraestructura, mientras que Kubernetes actúa como capa PaaS sobre ECI para administrar cargas de trabajo empresariales como Deployments, Services, StatefulSets y CronJobs.
Con base en Virtual Kubelet (VK) de la comunidad de Kubernetes, es posible agregar ECI a un clúster de Kubernetes como nodo virtual. De este modo, el clúster escala elásticamente sin verse limitado por la capacidad de cómputo de sus nodos. ECI administra la infraestructura subyacente de los pods: prepara los recursos necesarios e inicia las instancias de pod. Por lo tanto, no es necesario supervisar los recursos de las máquinas virtuales subyacentes. ECI garantiza que los recursos requeridos por los pods estén siempre disponibles. El clúster sigue determinando qué pods se ejecutan en ECI según su configuración de programación.
Los pods que se ejecutan en ECI utilizan un entorno de ejecución de contenedores seguro y aislado. Cada pod corresponde a una instancia de ECI.
Al ejecutar pods en ECI, se admiten las siguientes funciones de Kubernetes:
Controladores de cargas de trabajo: se admiten controladores comunes como Deployment, ReplicaSet, Job, CronJob y StatefulSet, y pueden ejecutarse directamente.
Descubrimiento de servicios: PrivateZone es compatible con el descubrimiento de servicios.
Balanceo de carga: esta función está disponible. Configure un Service del tipo
LoadBalancer.
ECI está integrado con Alibaba Cloud ACK. La siguiente tabla describe los tipos de clúster que pueden ejecutar pods en ECI y cuándo elegir cada uno.
|
Tipo de clúster |
Cuándo elegirlo |
Requisito de nodo virtual |
|
Clúster ACK Serverless (recomendado) |
Cuando necesita un entorno de Kubernetes que se ejecute completamente en ECI, ya sea para servicios en línea y fuera de línea, entornos de simulación o entornos de desarrollo y pruebas. |
Ninguna. Los pods de ECI se crean directamente. |
|
Clúster ACK (ECI y ECS híbrido) |
Si ya cuenta con un clúster ACK y desea agregar pods de ECI bajo demanda, por ejemplo, para manejar picos de tráfico en cargas de trabajo de larga duración. |
Despliegue un nodo virtual basado en VK. |
|
Clúster de Kubernetes autogestionado |
Su clúster de Kubernetes se ejecuta en Alibaba Cloud ECS o en un centro de datos local. |
Despliegue un nodo virtual basado en VNode. |
Clúster ACK Serverless (basado totalmente en ECI)
Un clúster ACK Serverless proporciona un entorno de Kubernetes que se ejecuta íntegramente en ECI. Todos los pods corren en ECI y Kubernetes solo se encarga de gestionar las cargas de trabajo empresariales.
(Recomendado) Si está evaluando tipos de clústeres de Kubernetes, seleccione un clúster ACK Serverless para sus servicios en línea y fuera de línea, entornos de simulación y entornos de desarrollo y pruebas.
Rentable: no necesita adquirir nodos, realizar mantenimiento de nodos ni planificar la capacidad del clúster. Despliegue aplicaciones en contenedores directamente y pague solo por los recursos de CPU y memoria configurados para sus aplicaciones.
Sin mantenimiento de infraestructura: gestione aplicaciones en contenedores directamente mediante la API de Kubernetes o la línea de comandos. Un clúster ACK Serverless también se integra con diversos servicios de Alibaba Cloud para simplificar el desarrollo en Kubernetes, lo que le permite centrarse en crear aplicaciones en lugar de administrar la infraestructura.
En un clúster ACK Serverless, no es necesario desplegar nodos virtuales manualmente. Cree pods de ECI directamente. Para más información, consulte ACK Serverless overview.
La siguiente figura muestra un clúster en el que cada pod se ejecuta en ECI.

Clúster ACK (ECI y ECS híbrido)
ACK fue una de las primeras plataformas en el mundo en obtener la certificación de conformidad de Kubernetes. Ofrece servicios de gestión de aplicaciones en contenedores de alto rendimiento que integran las capacidades de virtualización, almacenamiento, red y seguridad de Alibaba Cloud para simplificar la creación y el escalado de clústeres.
Si ya dispone de un clúster ACK, despliegue un nodo virtual basado en VK para utilizar ECI. Luego, cree pods de ECI bajo demanda para escalar el clúster sin necesidad de planificar la capacidad de cómputo de los nodos. Los pods de ECI pueden comunicarse con los pods ubicados en nodos reales del clúster.
Programar los picos de tráfico hacia ECI reduce el tiempo de escalado horizontal, disminuye los costos de escalado y aprovecha al máximo los recursos existentes. Cuando el tráfico disminuya, libere rápidamente los pods desplegados en ECI para reducir costos.
Para más información, consulte ACK product overview.
La siguiente figura muestra un clúster ACK en el que los pods se ejecutan tanto en nodos de ECI como de Elastic Compute Service (ECS).

Clúster de Kubernetes autogestionado
Si tiene un clúster de Kubernetes autogestionado en Alibaba Cloud ECS o en un centro de datos local, debe desplegar un nodo virtual basado en VNode para usar ECI. Para más información, consulte Integrate a self-managed Kubernetes cluster with ECI.
Límites y consideraciones
Debido a las restricciones de seguridad de la nube pública y a las limitaciones inherentes de los nodos virtuales, ECI no admite algunas funciones de Kubernetes, como HostPath y DaemonSet, tal como se describe en la siguiente tabla.
|
Función no compatible |
Motivo |
Alternativa |
|
HostPath |
Requiere acceso directo al sistema de archivos del host |
Utilice volúmenes emptyDir, discos o File Storage NAS (NAS) |
|
HostNetwork |
Requiere que el pod comparta el namespace de red del host |
Cree un Service del tipo LoadBalancer |
|
DaemonSet |
Requiere ejecutar una réplica de pod en cada nodo |
Despliegue múltiples imágenes en un pod mediante contenedores sidecar |
|
Service del tipo NodePort |
Requiere mapear un puerto del host a un contenedor |
Cree un Service del tipo LoadBalancer |
Algunos de los siguientes puntos deben decidirse antes de crear un clúster. Al usar ECI con ACK, tenga en cuenta lo siguiente:
Imágenes de contenedor: cargue previamente sus imágenes de contenedor en un repositorio de imágenes para acelerar la descarga. Como práctica recomendada, utilice Alibaba Cloud Container Registry (ACR) y emplee la dirección del endpoint de VPC para el repositorio de imágenes; por ejemplo,
registry-vpc.xxx.Descubrimiento de servicios: (recomendado) habilite PrivateZone al crear un clúster.
-
Versión del complemento: para utilizar nuevas funciones relacionadas con ECI, debe actualizar el complemento
ack-virtual-nodede su clúster ACK.Para obtener información sobre las versiones del componente
ack-virtual-node, consulte ack-virtual-node component.Para obtener información sobre cómo actualizar el componente, consulte Manage components.
Flujo de trabajo
Clúster ACK Serverless
Cree un clúster ACK Serverless. Para consultar las instrucciones, véase Create a cluster.
Prepare una imagen de contenedor y cárguela en un repositorio de imágenes, como se describe en la sección Límites y consideraciones de este tema.
Cree un pod de ECI. Para consultar las instrucciones, véase Create an ECI pod.
Consulte el estado de ejecución de las instancias de ECI que respaldan sus pods. Para más detalles, consulte la sección Consultar y gestionar instancias de ECI de este tema.
Clúster ACK
Cree un clúster ACK. Para consultar las instrucciones, véase Create a managed ACK cluster.
Despliegue el complemento
ack-virtual-nodepara crear un nodo virtual. Para consultar las instrucciones, véase Deploy the ACK virtual node component.Prepare una imagen de contenedor y cárguela en un repositorio de imágenes, como se describe en la sección Límites y consideraciones de este tema.
Configure un método de programación para que sus pods se ejecuten en ECI en lugar de en los nodos ECS del clúster. Para más detalles, consulte la sección Programar pods en ECI de este tema.
Cree un pod de ECI. Para consultar las instrucciones, véase Create an ECI pod.
Consulte el estado de ejecución de las instancias de ECI que respaldan sus pods. Para más detalles, consulte la sección Consultar y gestionar instancias de ECI de este tema.
Programar pods en ECI
En un clúster ACK Serverless, todo el clúster se ejecuta en ECI y no se requiere ninguna programación específica. En un clúster ACK híbrido que utiliza nodos ECI y ECS, puede programar la ejecución de pods en ECI mediante los siguientes métodos: programe cargas de trabajo individuales manualmente o programe pods automáticamente por namespace o etiqueta de pod.
-
Programar pods en ECI manualmente
Programe manualmente la ejecución de pods en ECI en un nodo virtual específico mediante la configuración de etiquetas de pod, la adición de un nodeSelector o la configuración de topologySpreadConstraints. Elija el tema que coincida con la arquitectura de su nodo virtual:
(Preview by invitation) Schedule pods to a Windows virtual node
Para distribuir pods de ECI entre zonas o aplicar reglas de afinidad, consulte Spread ECI pods across zones or configure affinity.
-
Programar pods en ECI automáticamente
eci-profile proporciona la función ECI Scheduler, un nuevo mecanismo de programación basado en el webhook de mutación. En el archivo de configuración de eci-profile, puede especificar los namespaces o etiquetas de pod que deben coincidir. Los pods con etiquetas coincidentes se programan automáticamente en ECI. Para más detalles, consulte Configure an eci-profile.
Usar funciones de ECI
Al crear pods en ECI dentro de un clúster de Kubernetes, puede agregar anotaciones a los metadatos a nivel de pod para utilizar funciones de ECI sin alterar la semántica de Kubernetes. Para consultar la lista de anotaciones compatibles y ejemplos de configuración, véase ECI pod annotations.
Agregue anotaciones manualmente al crear un pod o configure eci-profile para añadir anotaciones automáticamente a los pods con etiquetas coincidentes. Para más información sobre eci-profile, consulte la sección Programar pods en ECI de este tema.
Consultar y gestionar instancias de ECI
Gestione su clúster de Kubernetes y supervise el estado de ejecución de las instancias de ECI mediante las siguientes herramientas. Estas herramientas aplican tanto al clúster ACK Serverless como a los clústeres ACK que utilizan un nodo virtual.
-
Consola de Elastic Container Instance
Para consultar el estado de ejecución de las instancias de ECI en la consola de Elastic Container Instance, realice los siguientes pasos:
Inicie sesión en la consola de Elastic Container Instance.
En la barra de navegación superior, seleccione una región.
En la página Container Group, consulte las instancias de ECI creadas en la región seleccionada.
-
Consola de ACK
Utilice la consola de ACK para gestionar un clúster ACK Serverless o clústeres ACK y consultar el estado de ejecución de las instancias de ECI. Realice los siguientes pasos para ver las instancias de ECI:
Inicie sesión en la consola de ACK.
En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, localice el clúster objetivo y haga clic en el ID del clúster para ir a la página de detalles.
En el panel de navegación izquierdo, vaya a Workloads > Pods.
En la página Pods, seleccione un namespace para consultar las instancias de ECI en dicho namespace.
-
Alibaba Cloud CloudShell
Utilice Alibaba Cloud CloudShell para acceder a su clúster de Kubernetes y emplear comandos kubectl para gestionarlo. Para consultar las instrucciones, véase Use kubectl to connect to a cluster in Workbench or CloudShell.
-
Cliente kubectl
Utilice un cliente kubectl local para acceder a un clúster de Kubernetes remoto y emplear comandos kubectl para gestionarlo. Para consultar las instrucciones, véase Connect to a Kubernetes cluster by using kubectl.