Imágenes de nodos de containerd


En esta página se proporciona información sobre las imágenes de nodos que usan containerd como tiempo de ejecución de contenedores en los nodos de Google Kubernetes Engine (GKE).

Información sobre containerd

El runtime de contenedores es un software que se encarga de ejecutar contenedores y abstrae la gestión de contenedores para Kubernetes. Hay varios tiempos de ejecución de contenedores.

El tiempo de ejecución containerd es un tiempo de ejecución de contenedores estándar del sector compatible con Kubernetes y utilizado por muchos otros proyectos. El tiempo de ejecución de containerd proporciona la abstracción de capas que permite implementar un amplio conjunto de funciones, como gVisor y Image streaming, para ampliar la funcionalidad de GKE.

El tiempo de ejecución de containerd se considera más eficiente y seguro que el tiempo de ejecución de Docker.

Usar imágenes de containerd en clústeres de GKE

Cuando creas un clúster de GKE, un grupo de nodos en un clúster o actualizas un clúster, puedes usar una imagen de nodo de containerd. Los clústeres de Autopilot de GKE siempre usan Container-Optimized OS con containerd.

En la siguiente tabla se describen las imágenes de nodo de containerd admitidas en función del modo de clúster y del SO del grupo de nodos:

Modo del clúster Sistema operativo del grupo de nodos Imagen de nodo
Autopilot Linux cos_containerd
Estándar Linux
  • cos_containerd
  • ubuntu_containerd
Estándar Windows Server

Estas imágenes requieren la versión 1.21.1-gke.2200 o posterior de GKE.

Usar pods con privilegios para acceder a Docker

Si tus usuarios acceden a Docker Engine en un nodo mediante un pod con privilegios, debes actualizar esas cargas de trabajo para que no dependan directamente de Docker. Por ejemplo, puedes migrar tu proceso de extracción de registros y monitorización de Docker Engine a los complementos del sistema de GKE.

Crear imágenes de contenedor con containerd

No puedes usar containerd para compilar imágenes de contenedor. Las imágenes de Linux con containerd incluyen el archivo binario de Docker para que puedas usar Docker para compilar y enviar imágenes. Sin embargo, no recomendamos usar contenedores individuales ni nodos locales para ejecutar comandos que compilen imágenes.

Kubernetes no conoce los recursos del sistema que usan los procesos locales fuera del ámbito de Kubernetes, y el plano de control de Kubernetes no puede tener en cuenta esos procesos al asignar recursos. Esto puede provocar que tus cargas de trabajo de GKE se queden sin recursos o que el nodo se vuelva inestable.

Plantéate llevar a cabo estas tareas con otros servicios que no estén incluidos en el contenedor individual, como Cloud Build, o usa una herramienta como kaniko para crear imágenes como carga de trabajo de Kubernetes.

Si ninguna de estas sugerencias te sirve y conoces los riesgos, puedes seguir usando Docker en el nodo local para compilar imágenes. Debes enviar las imágenes a un registro antes de poder usarlas en un clúster de GKE. Kubernetes con containerd no reconoce las imágenes creadas localmente con Docker.

Depurar contenedores en nodos de containerd

Para depurar o solucionar problemas en nodos Linux, puedes interactuar con containerd mediante la herramienta de línea de comandos portátil creada para los tiempos de ejecución de contenedores de Kubernetes: crictl. crictl admite funcionalidades comunes para ver contenedores e imágenes, leer registros y ejecutar comandos en los contenedores. Consulta la guía de usuario de crictl para ver el conjunto completo de funciones admitidas e información sobre el uso.

En los nodos de Windows Server, el daemon de containerd se ejecuta como un servicio de Windows llamado containerd.

Los registros están disponibles de la siguiente manera:

  • Windows: C:\etc\kubernetes\logs\containerd.log
  • Linux: ejecuta journalctl -u containerd

También puedes ver los registros de los nodos de Windows y Linux en el Explorador de registros, en LOG NAME: "container-runtime".

Problemas conocidos y solución de problemas

Para solucionar problemas y consultar los problemas conocidos con soluciones alternativas, consulta el artículo Solucionar problemas del tiempo de ejecución del contenedor.

Siguientes pasos