CRI-O es una implementación de Kubernetes CRI, es decir, Container Runtime Interface de Red Hat. Esto debería facilitar la gestión de contenedores, ya que no es necesario ejecutar código adicional. Lo mismo se aplica a cualquier herramienta.
CRI-O es una palabra de maletín de Container Runtime Interface (CRI) y Open Container Initiative (OCI). CRI permite a Kubeletes utilizar diferentes tiempos de ejecución para contenedores. Se debe volver a compilar Kubernetes cada vez.
Antes de que Red Hat publicara la interfaz, Kubernetes estaba vinculado a tiempos de ejecución especiales. CRI rompió esta conexión. Este proceso continuó con CRI-O: ahora los contenedores compatibles con OCI se pueden iniciar y detener de forma completamente independiente de código o herramientas adicionales.
Así es como funciona CRI-O
- 1. Kubernetes quiere iniciar un contenedor específico.
- 2. CRI-O aborda esto.
- 3. La interfaz se dirige a las bibliotecas de imágenes y memoria del contenedor.
- 4. El tiempo de ejecución se activa al mismo tiempo.
- 5. El tiempo de ejecución inicia el contenedor en interacción con las bibliotecas.
- 6. El tiempo de ejecución le dice al kernel de Linux qué procesos deben ejecutarse.
Detener contenedores básicamente funciona de la misma manera. En lugar del comando de inicio, se da el comando de detener el contenedor.
Los puntos débiles de CRI-O
En algún momento, CRI-O debería funcionar realmente con todos los contenedores OCI. Sin embargo, aún no está claro cuándo se logrará esta compatibilidad total. Hasta ahora, se han admitido los tiempos de ejecución runC y clear container.
Además, si deseas crear imágenes, aún debes confiar en Source-to-Image de OpenShift o Buildah. La interfaz de línea de comandos CRI-O no es adecuada para esto. Solo está destinado a verificar CRI-O. Sin embargo, la gestión de contenedores en un entorno de producción no puede hacerlo.
CRI-O es un problema para Docker
Al principio, Kubernetes solo tenía un tiempo de ejecución para contenedores: Docker. Rkt se añadió más tarde. Sin embargo, agregar más tiempos de ejecución resultó ser una tarea lenta y difícil. Por lo tanto, Docker siempre tuvo un papel especial. CRI-O tiene como objetivo acabar con esto.
Docker ha reconocido esto y con el sistema «containerd» ha creado una opción «ligera» para gestionar contenedores. Desde la versión 1.1 hay incluso un complemento nativo para CRI a bordo. Sin embargo, containerd no se ha optimizado para su uso con Kubernetes, sino que se desarrolló para una variedad de propósitos. Esto sugiere que es probable que Docker pierda su función de «tiempo de ejecución estándar» para Kubernetes.