Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Migración del runtime de contenedores del nodo de Docker a containerd

Última actualización: Sep 04, 2026

Kubernetes 1.24 eliminó Dockershim y dejó de admitir Docker como runtime de contenedores integrado. ACK ya no admite Docker como runtime de contenedores en la versión 1.24 y posteriores. Para actualizar un clúster de ACK a Kubernetes 1.24 o superior, primero migre el runtime de contenedores del nodo de Docker a containerd.

Containerd es un runtime de contenedores estándar de la industria que ofrece tiempos de inicio más rápidos, menor uso de recursos y mayor seguridad en comparación con Docker.

Antes de empezar

En la mayoría de los casos, las cargas de trabajo no dependen directamente del runtime de contenedores, ya que el backend de Docker invoca a containerd; por lo tanto, la migración debería ser transparente para las aplicaciones en ejecución.

Migre primero su entorno de pruebas y posteriormente su entorno de producción durante horas de baja demanda.

Opciones de migración

Hay dos métodos disponibles para migrar el runtime de contenedores del nodo.

Opción 1: Actualizar el node pool existente (recomendado)

Use la función Kubelet Update en la página Node Pools. Este método reemplaza automáticamente el disco del sistema de cada nodo.

Importante

Respalde cualquier dato en los discos del sistema de los nodos antes de comenzar. Los discos del sistema se reemplazan durante la actualización. Los discos de datos no se ven afectados.

  1. Inicie sesión en la Consola de administración de Container Service. En el panel de navegación izquierdo, haga clic en Clusters.

  2. Haga clic en el nombre de su clúster. En el panel de navegación izquierdo, elija Nodes > Node Pools.

  3. En la columna Actions del node pool objetivo, haga clic en image > Kubelet Update.

  4. Revise los detalles de la actualización del runtime y haga clic en Precheck. Una vez superada la verificación previa, siga las instrucciones en pantalla para completar la actualización.

Para obtener detalles sobre los parámetros, consulte Upgrade a node pool.

Opción 2: Crear un nuevo node pool y migrar cargas de trabajo (opcional)

Cree un nuevo node pool con el runtime containerd y transfiera gradualmente las cargas de trabajo hacia él antes de retirar el pool anterior.

  1. Create and manage a node pool y establezca el runtime de contenedores en containerd.

  2. Escale horizontalmente el nuevo node pool para agregar nodos.

  3. Aísle el node pool antiguo o use etiquetas de nodo para reprogramar las cargas de trabajo en el nuevo pool.

  4. Migre todas las cargas de trabajo al nuevo node pool.

  5. Retire el node pool antiguo.

Para obtener instrucciones sobre cómo aislar nodos, consulte Drain a node and manage its schedulability.

Funcionamiento de las actualizaciones por reemplazo de disco

Cuando usa la Opción 1, ACK realiza una actualización por reemplazo de disco para cada nodo de forma secuencial:

  1. Drena el nodo y lo marca como no programable.

  2. Apaga la instancia ECS.

  3. Reemplaza el disco del sistema. El ID del disco del sistema cambia, pero el tipo de disco, la dirección IP de la instancia y la dirección MAC de la interfaz de red elástica (ENI) permanecen sin cambios.

  4. Reinicializa el nodo e instala el runtime containerd.

  5. Reinicia el nodo y lo marca como programable una vez que está listo.

image

Consideraciones posteriores a la migración

Los comandos y las API de Docker ya no están disponibles en los nodos. Después de la migración, Docker deja de gestionar el ciclo de vida de los contenedores. Use los comandos de containerd en su lugar. Para consultar los equivalentes en containerd de los comandos comunes de Docker, consulte Comparison of containerd, sandboxed containers, and Docker runtimes.

Docker Build no está disponible en los nodos del clúster. Containerd no incluye una herramienta integrada para compilar imágenes. La descarga de imágenes no se ve afectada. Si anteriormente compilaba imágenes en los nodos del clúster, use una de estas alternativas:

  • Alibaba Cloud Container Registry (ACR) — recomendado: ACR compila imágenes mediante BuildKit, la herramienta oficial de compilación de imágenes de Docker. Cree una instancia de ACR y configure reglas de compilación basadas en un Dockerfile para activar compilaciones automáticas. La imagen resultante se envía directamente a su repositorio de imágenes. Consulte Build images using an Enterprise Edition instance.

  • Una instancia ECS dedicada: Cree una instancia ECS independiente, instale Docker en ella y ejecute comandos de Docker para compilar imágenes. Consulte Install and use Docker and Docker Compose.

Revise las configuraciones de Dockerfile. La sintaxis principal de Dockerfile no ha cambiado. Verifique la compatibilidad de la imagen base, la configuración de variables de entorno y las definiciones de comandos de ejecución para asegurar que las imágenes se compilan y ejecuten correctamente en el entorno de containerd.

Preguntas frecuentes

¿Cuánto tiempo tarda la actualización de cada nodo?

Sin instantánea, la actualización de cada nodo suele tardar menos de 8 minutos. Si crea una instantánea durante la actualización, esta comienza después de generar la instantánea; ACK concede hasta 40 minutos para su creación. Si la instantánea no está lista dentro de los 40 minutos, la actualización del nodo expira y falla (sin iniciar la actualización en ese nodo).

Si no almacena datos de negocio en los discos del sistema, omita la creación de instantáneas para mantener tiempos de actualización cortos.

¿Cómo se actualizan los nodos por lotes?

El tamaño de los lotes sigue un patrón exponencial: 1, 2, 4, 8, y así sucesivamente, hasta alcanzar el número máximo configurado de actualizaciones simultáneas. Después de eso, cada lote actualiza esa cantidad de nodos. Por ejemplo, con un máximo de 4 actualizaciones simultáneas, los lotes son 1, 2, 4, 4, 4.

¿Se interrumpirán mis servicios durante la actualización?

Los nodos se drenan durante la actualización. Los servicios no se ven afectados si sus pods implementan un apagado graceful y tiene varias réplicas ejecutándose en diferentes nodos. Para evitar que todas las réplicas de la misma aplicación se actualicen en el mismo lote, establezca el recuento máximo de actualizaciones simultáneas en un valor inferior al número de réplicas de pods.

¿Puedo revertir el proceso después de la migración?

No. La reversión no es compatible.

¿Se pierden datos en los nodos durante la migración?

Los discos del sistema se reemplazan. Respalde cualquier dato importante en los discos del sistema antes de comenzar. Los discos de datos no se ven afectados.

¿Cambia la dirección IP del nodo cuando se reemplaza el disco del sistema?

No. El ID del disco del sistema cambia, pero el tipo de disco, la dirección IP de la instancia y la dirección MAC de la ENI permanecen sin cambios. Consulte Replace the system disk of an instance (change the OS).

Después de actualizar a containerd, el directorio de Docker todavía ocupa espacio en disco. ¿Cómo lo limpio?

El directorio de Docker en el disco de datos puede contener archivos de contenedores, imágenes, registros y rutas de archivo que usted creó. Si ya no son necesarios, elimine manualmente el directorio de Docker del disco de datos después de la migración.