Saltar al contenido

¿Cómo soluciono el error "cannotpullcontainererror" de mis tareas de Amazon ECS en Fargate?

6 minutos de lectura
0

Quiero resolver el error "cannotpullcontainererror" para poder iniciar mis tareas de Amazon Elastic Container Service (Amazon ECS) en AWS Fargate.

Descripción corta

El error "cannotpullcontainererror" puede impedir que se inicien las tareas de Amazon ECS en Fargate. Para estas tareas, las configuraciones de red de Amazon Virtual Private Cloud (Amazon VPC) deben permitir a ECS acceder al repositorio donde está almacenada la imagen. Sin la red correcta, Amazon ECS no puede extraer la imagen en Fargate y el contenedor no puede iniciarse.

Resolución

Para solucionar el error "cannotpullcontainererror", siga estos pasos.

Confirmación de que su VPC permite que la infraestructura de Amazon ECS llegue al repositorio de imágenes

Las tablas de enrutamiento asociadas a las subredes en las que se crea la tarea deben permitir que la infraestructura de Amazon ECS llegue al punto final del repositorio. Puede acceder al punto de enlace a través de una puerta de enlace de Internet, una puerta de enlace de NAT o puntos de enlace de VPC.

En el caso de las configuraciones que no utilizan AWS PrivateLink, siga estos pasos:

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, elija Subredes.
  3. Seleccione la subred que utiliza su tarea de ECS Fargate.
  4. Elija la pestaña de la tabla de enrutamiento.
  5. En la columna Destino, confirme que la ruta predeterminada (0.0.0.0/0) de la tabla de enrutamiento permite el acceso público a Internet. Puede acceder a través de una puerta de enlace NAT o una puerta de enlace de Internet.
    Importante: La puerta de enlace NAT o la puerta de enlace de Internet deben ser el destino de la ruta predeterminada. Si quiere ver ejemplos de tablas de enrutamiento, consulte Ejemplos de opciones de enrutamiento. Si no usa una puerta de enlace NAT o una puerta de enlace de Internet, asegúrese de que la configuración personalizada permita el acceso público a Internet.

Si usa una puerta de enlace de Internet (subredes públicas), confirme que la tarea tenga asignada una IP pública. Al crear la tarea o el servicio, establezca Asignación automática de IP pública en **Habilitada ** en la sección VPC y grupos de seguridad.

En el caso de configuraciones que usan PrivateLink, confirme que los grupos de seguridad de sus puntos de enlace de VPC permiten que la infraestructura de Fargate los utilice.

Nota: Las tareas de Amazon ECS hospedadas en Fargate que utilizan la versión 1.3.0 o una anterior requieren el punto de enlace de VPC com.amazonaws.region.ecr.dkr de Amazon Elastic Container Registry (Amazon ECR). Estas tareas también requieren el punto de enlace de la puerta de enlace de Amazon Simple Storage Service (Amazon S3). Las tareas de Amazon ECS alojadas en Fargate que utilizan la versión 1.4.0 o posterior requieren los puntos de enlace de VPC de Amazon ECR com.amazonaws.region.ecr.dkr y com.amazonaws.region.ecr.api. Estas tareas también requieren el punto de enlace de la puerta de enlace de Amazon S3.

Para las configuraciones que usan PrivateLink, complete los pasos siguientes:

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, elija Puntos de enlace.
  3. Seleccione el punto de enlace de la lista de puntos de enlace y, a continuación, elija la pestaña Subredes. Los puntos de enlace de VPC com.amazonaws.region.ecr.dkr y com.amazonaws.region.ecr.api de Amazon ECR aparecen en la lista de subredes y están asociados a las subredes de Fargate. La puerta de enlace de Amazon S3 también está en la lista de subredes.
    Nota: Si una subred no aparece en la lista, elija Administrar subredes. A continuación, seleccione la subred en función de su zona de disponibilidad. Luego, elija Modificar subredes.
  4. Seleccione la pestaña Política y, a continuación, confirme que se cumplen los requisitos correctos de la política.
  5. Confirme que el grupo de seguridad adjunto a los puntos de enlace de VPC com.amazonaws.region.ecr.api y com.amazonaws.region.ecr.dkr permita las conexiones entrantes en el puerto 443 desde las tareas de Amazon ECS para Fargate. Para confirmar esta configuración, seleccione el punto de enlace de la lista.
  6. Seleccione la pestaña Grupos de seguridad.
  7. En ID de grupo, elija el ID de grupo de seguridad.
  8. Elija la pestaña Reglas de entrada y, a continuación, confirme que puede ver la regla que permite 443 conexiones desde sus tareas de ECS en Fargate.

Comprobación del conjunto de opciones DHCP de VPC

Siga estos pasos:

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, seleccione Sus VPC.
  3. Seleccione la instancia de VPC que contiene la tarea de Fargate.
  4. En la pestaña Detalles, anote la configuración del conjunto de opciones de DHCP.
  5. En el panel de navegación, seleccione Conjuntos de opciones de DHCP.
  6. Seleccione el conjunto de opciones de DHCP que ha anotado.
  7. Elija Acciones y, a continuación, Ver detalles.
  8. Confirme que los servidores de nombres de dominio estén configurados en AmazonProvideDNS. Si no está establecido en AmazonProvidedDNS, configure el reenvío de DNS condicional.

Comprobación de los permisos del rol de ejecución de tareas

Siga estos pasos:

  1. Abra la consola de AWS Identity and Access Management (IAM).
  2. En el panel de navegación, seleccione Roles.
  3. Seleccione el rol de ejecución de tareas que utilizan sus tareas de Fargate.
  4. Confirme que el rol de ejecución de tareas tiene los permisos necesarios para extraer una imagen de Amazon ECR.

Comprobación de que la imagen existe

Siga estos pasos:

  1. Abra la consola de Amazon ECR.
  2. Seleccione el repositorio de Amazon ECR del que la tarea de Fargate extraerá la imagen.
  3. Confirme que el URI y la etiqueta de Amazon ECR coinciden con los que se han especificado en la definición de la tarea. Si falta la imagen, compruebe si hay una política de ciclo de vida que administre las imágenes.

Nota: Si no usa Amazon ECR, asegúrese de que puede ver image:tag en el repositorio de imágenes especificado.

Comprobación de que EphemeralStorage se ha asignado a la tarea de Fargate

De forma predeterminada, a las tareas de Fargate se les asignan 20 GiB de almacenamiento efímero. Si el tamaño de la imagen es demasiado grande, aparecerá un error similar al siguiente:

"CannotPullContainerError: ref pull has been retried 1 time(s): failed to extract layer no space left on device: unknown"

Nota: Dado que este almacenamiento se usa para archivos temporales, registros y otros procesos, es posible que aparezca el error aunque la imagen tenga un tamaño más pequeño.

Para resolver el problema, edite la asignación en la definición de la tarea. Para más información, consulte Almacenamiento efímero de tareas de Fargate para Amazon ECS.

Nota: Las tareas de Fargate que utilizan la versión de la plataforma 1.4.0 o una posterior reciben un mínimo de 20 GiB de almacenamiento efímero. La cantidad total de almacenamiento efímero se puede aumentar hasta un máximo de 200 GiB.

OFICIAL DE AWSActualizada hace un año