La historia de Kubernetes y Docker

En la versión 1.5 a fines de 2016, Kubernetes introdujo un nuevo estándar de interfaz: CRI, Container Runtime Interface.

CRI usa ProtoBuffer y gPRC para especificar cómo kubelet llama al tiempo de ejecución del contenedor para administrar contenedores e imágenes, pero esta es una interfaz completamente nueva que es completamente incompatible con las llamadas anteriores de Docker.

 Kubernetes solo puede proporcionar una solución de "compromiso" al mismo tiempo, agregando un "adaptador" entre kubelet y Docker para convertir la interfaz de Docker en una interfaz que cumpla con el estándar CRI.

Y Docker dividió el Docker Engine de arquitectura única original en varios módulos, y la parte del demonio de Docker se donó a CNCF para formar un contenedor.

Como proyecto gestionado por CNCF, containerd debe cumplir con los estándares CRI. Sin embargo, debido a sus propios motivos, Docker solo llama a containerd en Docker Engine y la interfaz externa permanece sin cambios, lo que significa que aún no es compatible con CRI.

 Hay dos cadenas de llamadas en Kubernetes:

  • La primera es usar la interfaz CRI para llamar a dockershim, luego dockershim llama a Docker y Docker usa containerd para operar el contenedor.
  • El segundo es usar la interfaz CRI para llamar directamente a containerd para operar el contenedor.

Dado que containerd se usa para administrar contenedores, el efecto final de las dos cadenas de llamadas es exactamente el mismo, pero el segundo método guarda los dos enlaces de dockershim y Docker Engine, que es más conciso y claro, con menos pérdidas y mejor rendimiento Mejorar algunos .

Por lo tanto, "abandonar Docker" no tendrá mucho impacto en Kubernetes y Docker, porque ambos ya cambiaron la capa inferior a un contenedor de código abierto, y la imagen y el contenedor originales de Docker aún se ejecutarán normalmente, el único cambio es que Kubernetes pasa por alto Docker y llama directamente a containerd dentro de Docker.

Docker es una línea completa de productos de software, no solo en contenedores, sino que también incluye creación de espejos, distribución, pruebas y muchos otros servicios, e incluso Kubernetes integrado en Docker Desktop.

Este artículo es una nota de estudio para el día 10 de julio. El contenido proviene del "Curso práctico introductorio de Kubernetes" de Geek Time . Se recomienda este curso.

Supongo que te gusta

Origin blog.csdn.net/key_3_feng/article/details/131649030
Recomendado
Clasificación