Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Descripción del motor de contenedores

Introducción a los motores de contenedores

Los motores de contenedores, uno de los componentes más importantes de Kubernetes, gestionan el ciclo de vida de las imágenes y los contenedores. El kubelet interactúa con un tiempo de ejecución contenedor con la Container Runtime Interface (CRI).

CCE soporta containerd y Docker. containerd se recomienda por sus trazas más cortas, menos componentes, mayor estabilidad y menos consumo de recursos de nodo.

Kubernetes ha eliminado dockershim de v1.24 y no es compatible con Docker de forma predeterminada. Para obtener más información, consulta Kubernetes está pasando de Dockershim: Compromisos y próximos pasos. Para garantizar la experiencia del usuario, CCE seguirá soportando Docker en la v1.25, pero solo hasta la v1.27. Es necesario migrar los nodos de Docker a containerd antes de eso. Para obtener más información, véase Migración de nodos de Docker a containerd.

Asignación entre los sistemas operativos de nodos y los motores de contenedores

Tabla 1 Sistemas operativos de nodo y motores de contenedor en clústeres de CCE

SO

Versión del kernel

Motor de contenedores

Container Storage Rootfs

Container Runtime

CentOS 7.x

3.x

Docker

Los clústeres de v1.23 y posteriores admiten containerd.

Los clústeres de v1.19.16 y anteriores usan Device Mapper.

Los clústeres de v1.19.16 y posteriores usan OverlayFS.

runC

EulerOS 2.3

3.x

Docker

Device Mapper

runC

EulerOS 2.5

3.x

Docker

Device Mapper

runC

EulerOS 2.9

4.x

Docker

Los clústeres de v1.23 y posteriores admiten containerd.

OverlayFS

runC

Ubuntu 18.04

4.x

Docker

Los clústeres de v1.23 y posteriores admiten containerd.

OverlayFS

runC

Huawei Cloud EulerOS 1.1

3.x

Docker

containerd

OverlayFS

runC

Huawei Cloud EulerOS 2.0

5.x

Docker

containerd

OverlayFS

runC

Tabla 2 Sistemas operativos de nodo y motores de contenedor en clústeres de Turbo de CCE

Tipo de nodo

SO

Versión del kernel

Motor de contenedores

Rootfs de almacenamiento de contenedor

Tiempo de ejecución de contenedores

Elastic Cloud Server (VM)

CentOS 7.6

3.x

Docker

containerd

OverlayFS

runC

Ubuntu 18.04

4.x

EulerOS 2.9

4.x

Huawei Cloud EulerOS 1.1

3.x

Huawei Cloud EulerOS 2.0

5.x

Elastic Cloud Server (physical machine)

EulerOS 2.9

4.x

containerd

Device Mapper

Kata

Tabla 3 Sistemas operativos de nodo y motores de contenedor en CCE de Kunpeng

SO

Versión del kernel

Motor de contenedores

Rootfs de almacenamiento de contenedor

Tiempo de ejecución de contenedores

EulerOS 2.8

4.x

Docker

OverlayFS

runC

Comandos comunes de containerd y Docker

containerd no soporta Docker API y Docker CLI, pero puede ejecutar comandos crictl para implementar funciones similares.

Tabla 4 Comandos relacionados con la imagen

N.º

Comando de Docker

Comando de containerd

Notas

1

docker images [Option] [Image name[:Tag]]

crictl images [Option] [Image name[:Tag]]

Listar imágenes locales.

2

docker pull [Option] Image name[:Tag|@DIGEST]

crictl pull [Option] Image name[:Tag|@DIGEST]

Extraer las imágenes.

3

docker push

Ninguno

Empujar las imágenes.

4

docker rmi [Option] Image...

crictl rmi [Option] Image ID...

Eliminar una imagen local.

5

docker inspect Image ID

crictl inspecti Image ID

Comprobar las imágenes.

Tabla 5 Comandos relacionados con el contenedor

N.º

Comando de Docker

Comando de containerd

Notas

1

docker ps [Option]

crictl ps [Option]

Listar los contenedores.

2

docker create [Option]

crictl create [Option]

Crear un contenedor.

3

docker start [Option] Container ID...

crictl start [Option] Container ID...

Iniciar un contenedor.

4

docker stop [Option] Container ID...

crictl stop [Option] Container ID...

Detener un contenedor.

5

docker rm [Option] Container ID...

crictl rm [Option] Container ID...

Eliminar un contenedor.

6

docker attach [Option] Container ID

crictl attach [Option] Container ID

Conectarse a un contenedor.

7

docker exec [Option] Container ID Startup command [Parameter...]

crictl exec [Option] Container ID Startup command [Parameter...]

Acceder al contenedor.

8

docker inspect [Option] Container name|ID...

crictl inspect [Option] Container ID...

Consultar detalles del contenedor.

9

docker logs [Option] Container ID

crictl logs [Option] Container ID

Ver los logs de contenedor.

10

docker stats [Option] Container ID...

crictl stats [Option] Container ID

Comprobar el uso de recursos del contenedor.

11

docker update [Option] Container ID...

crictl update [Option] Container ID...

Actualizar los límites de recursos de contenedor.

Tabla 6 Comandos relacionados con pod

N.º

Comando de Docker

Comando de containerd

Notas

1

Ninguno

crictl pods [Option]

Listar los pods.

2

Ninguno

crictl inspectp [Option] Pod ID...

Ver detalles del pod.

3

Ninguno

crictl start [Option] Pod ID...

Iniciar un pod.

4

Ninguno

crictl runp [Option] Pod ID...

Ejecutar un pod.

5

Ninguno

crictl stopp [Option] Pod ID...

Detener un pod.

6

Ninguno

crictl rmp [Option] Pod ID...

Borra un pod.

Los contenedores creados e iniciados por containerd son eliminados inmediatamente por kubelet. containerd no admite la suspensión, reanudación, reinicio, cambio de nombre y espera de contenedores ni la creación, importación, exportación, comparación, inserción, búsqueda y etiquetado de imágenes de Docker. containerd no admite la copia de archivos. Puede iniciar sesión en el repositorio de imágenes modificando el archivo de configuración de containerd.

Diferencias en el rastreo

  • Docker (Kubernetes 1.23 y las versiones anteriores):

    kubelet --> docker shim (en el proceso de kubelet) --> docker --> containerd

  • Docker (solución comunitaria para Kubernetes v1.24 o posterior):

    kubelet --> cri-dockerd (kubelet utiliza CRI para conectarse a cri-dockerd) --> docker--> containerd

  • containerd:

    kubelet --> cri plugin (en el proceso de containerd) --> containerd

Aunque Docker ha agregado funciones como clúster de enjambre, construcción de Docker y API de Docker, también introduce errores. En comparación con containerd, Docker tiene una capa más de llamadas. Por lo tanto, containerd ahorra más recursos y es más seguro.

Descripción de la versión del motor de contenedores

  • Docker
    • EulerOS/CentOS: docker-engine 18.9.0, una versión de Docker personalizada para CCE. Las vulnerabilidades de seguridad se corregirán de manera oportuna.
    • Ubuntu: docker-ce 18.9.9 (versión comunitaria). Se recomienda utilizar el motor de containerd para los nodos de Ubuntu.

      El docker-ce de código abierto de Ubuntu puede activar errores cuando se realizan operaciones de ejecución simultánea (por ejemplo, se configuran múltiples sondeos de ejecución). Se recomienda utilizar sondas de HTTP/TCP.

  • containerd: 1.4.1