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
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 |
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 |
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.
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. |
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. |
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