Si utiliza Kubernetes o K8, probablemente haya encontrado uno de los errores más comunes: ImagePullBackOff.
Tratar el error ImagePullBackOff puede resultar frustrante y tedioso si no está familiarizado con el problema.
Además, Kubernetes tiene un ecosistema enorme.
Sin el conocimiento adecuado, rastrear el origen del problema puede ser como encontrar una aguja en un pajar, incluso si implementa soluciones de monitoreo de pila completa para sus aplicaciones modernas.
La buena noticia es que estamos aquí para ayudar.
Esta guía cubre lo que necesita saber sobre cómo prevenir y solucionar el error ImagePullBackOff en Kubernetes.
¿Qué significa ImagePullBackOff de Kubernetes?
El estado ImagePullBackOff significa que un Pod no pudo iniciarse porque Kubernetes no pudo extraer una imagen de contenedor.
El Apártate parte en el estado significa que Kubernetes continuará intentando extraer la imagen con un retraso cada vez mayor (de ahí, BackOff).
Analicemos esto más.
En Kubernetes, un agente en cada nodo (llamado kubelet) es responsable de ejecutar contenedores en el nodo y extraer la imagen.
Puede pensar en varios almacenes, donde cada almacén (nodo) incluye un montacargas (kubelet) que levanta y hace funcionar el contenedor.
Dado que kubelet es responsable de los contenedores que se ejecutan en ese nodo, informa lo que sucede a la API central de Kubernetes.
Luego, kubelet le indicará al tiempo de ejecución del contenedor que extraiga la imagen del contenedor si aún no existe en un Node.
Si algo impide que el tiempo de ejecución del contenedor extraiga una imagen en el nodo (que Kubernetes ha programado su pod), el kubelet informará ErrImagePull y luego ImagePullBackOff (y seguirá intentándolo).
Básicamente, el error ImagePullBackOff indica que algo impide que Kubernetes extraiga la imagen que desea en un nodo específico.
Causas fundamentales del error ImagePullBackOff
Solucionar el error ImagePullBackOff Kubernetes requiere comprender qué causó el problema.
Algunas de las causas más comunes del error ImagePullBackOff incluyen las siguientes.
Usar un registro privado sin dar las credenciales necesarias
Muchas empresas suelen utilizar Kubernetes con un registro de imágenes de contenedores privado para mantener las aplicaciones internas no públicas en las bibliotecas de imágenes de contenedores.
Si desea extraer una imagen de registros privados, asegúrese de proporcionar a Kubernetes las credenciales necesarias que le permitan recuperar la imagen.
Deberá crear un secreto en Kubernetes, un medio para almacenar información confidencial, como una clave SSH o un token OAuth.
También necesitarás crear un secreto al extraer de:
- Registros de acceso público pero protegidos con contraseña
- Imágenes privadas en GitHub Container Registry, Google Container Registry y otros
Hacer referencia a una etiqueta o una imagen que no existe
Crear un pod que haga referencia a una imagen o etiqueta inexistente es una de las causas más comunes del error ImagePullBackOff y, a menudo, es el resultado de cometer un error tipográfico.
También puede haber casos en los que la imagen debería existir y usted usa el nombre correcto, pero la etiqueta podría estar retirada.
Si estás siguiendo un libro o tutorial antiguo que hace referencia a una etiqueta de imagen específica, verifica si la etiqueta todavía existe.
Si la etiqueta ya no existe, busque la etiqueta de reemplazo que le conviene usar para evitar encontrarse con el error ImagePullBackOff.
Ser bloqueado por el registro y otros problemas
Algunas bibliotecas de registro tienen límites de tarifas.
Una vez que alcance el límite máximo de descarga permitido, el registro puede bloquearlo, lo que podría causar el error ImagePullBackOff.
Deberá registrarse para obtener una cuenta o buscar otro lugar para obtener su imagen.
El error ImagePullBackOff también puede ocurrir si no configurar correctamente la autenticación SSL/TLS que el registro requiere.
4 consejos para la solución de problemas de ImagePullBackOff Kubernetes
A continuación se muestran varias formas de investigar y corregir el error ImagePullBackOff.
1. Utilice kubectl para describir
Uno de los pasos iniciales para encontrar la causa raíz y corregir el error ImagePullBackOff es utilizar kubectl describe.
Hacerlo puede mostrarle el registro de errores completo, ayudándole a ver la posible causa del problema.
Por ejemplo, si tiene un pod que hace referencia a una imagen que no existe, obtendrá una salida de Eventos de kubectl describe
Según los eventos mostrados anteriormente, el error muestra claramente que se equivocó en el nombre en este escenario, lo que provocó el problema de ImaePullBackOff Kubernetes.
2. Verifique su pod y secreto si usa un registro privado
Si extrae imágenes de registros privados, asegúrese de crear un secreto que contenga las credenciales necesarias para acceder al registro.
Además, asegúrese de agregar el secreto en el espacio de nombres correcto.
También tendrás que configurar el campo imagePullSecrets en tu pod. El campo le indica a Kubernetes qué secreto específico debe utilizar al autenticarse en el registro.
Debería verse así.
3. Evaluar el alcance del problema
Descubra la raíz exacta del problema considerando lo siguiente:
- ¿Hay otros pods ejecutándose ya en un nodo específico? Si el nodo ya está ejecutando otros pods sin ningún problema, debería funcionar bien ya que el nodo extrae del mismo registro. Investigue qué hace que el pod sea diferente para ayudar a determinar la causa raíz del error ImagePullBackOff.
- ¿Puede el nodo (en el clúster) extraer la imagen? Considere saltar al nodo a través de SSH y verificar si puede ejecutar una extracción de la ventana acoplable y obtener la imagen.
- ¿Puedes extraer la imagen localmente? Extraiga la imagen de su estación de trabajo y, si no funciona, intente con podman pull o docker pull para ver si puede recuperar la imagen. Hacerlo puede darle una pista de por qué falla la extracción de la imagen localmente.
4. Aumente los niveles de registro de kubelet.
Si puede acceder a los nodos, obtenga más información elevando los niveles de registro en kubelet.
Tendrá que configurar el parámetro —v, que modifica la detalle del nivel de registro.
Llegue al final de los errores de ImagePullBackOff Kubernetes
Si bien varias razones y factores pueden causar errores de ImagePullBackOff, solucionar el problema no tiene por qué ser una tarea difícil.
Comience investigando y leyendo el mensaje de error y siguiendo los consejos de esta guía.