Resolución de problemas de actualizaciones de la estrategia de implementación de Amazon ECS - Amazon Elastic Container Service

Resolución de problemas de actualizaciones de la estrategia de implementación de Amazon ECS

En esta sección se brindan soluciones a problemas comunes que puede encontrar al migrar estrategias de implementación.

Múltiples revisiones de servicio o conjuntos de tareas

Los siguientes problemas se refieren a tener varias revisiones de servicio para una sola implementación.

Varios conjuntos de tareas al actualizar el controlador de implementación de ECS

Mensaje de error: Updating the deployment controller is not supported when there are multiple tasksets in the service. Please ensure your service has only one taskset and try again.

Solución: este error se produce al intentar cambiar el tipo de controlador de implementación de un servicio con varios conjuntos de tareas activos. Para resolver este problema en el controlador de implementación CODE_DEPLOY o EXTERNAL:

  1. Compruebe los conjuntos de tareas actuales:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets"
  2. Espere a que se complete cualquier implementación en curso.

  3. Fuerce una nueva implementación para limpiar los conjuntos de tareas:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
  4. Si es necesario, elimine manualmente los conjuntos de tareas adicionales:

    aws ecs delete-task-set --cluster your-cluster-name --service your-service-name --task-set task-set-id
  5. Cuando solo quede un conjunto de tareas, vuelva a intentar actualizar el controlador de implementación.

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Falta el conjunto de tareas principal al actualizar el controlador de implementación ECS

Mensaje de error: Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.

Solución: este error se produce al intentar cambiar el tipo de controlador de implementación de un servicio que no tiene un conjunto de tareas principal. Para resolver este problema, siga estos pasos:

  1. Verifique el estado del servicio y los conjuntos de tareas. ). Si existe un conjunto de tareas en el servicio, debe marcarse como ACTIVE.

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets[*].[status,id]

    Si no hay ningún conjunto de tareas en estado ACTIVE, migre la implementación. Para más información, consulte Métodos de migración.

  2. Si el servicio no tiene tareas en ejecución, implemente al menos una tarea actualizando el servicio:

    aws ecs update-service-primary-task-set --cluster your-cluster-name --service your-service-name --primary-task-set your-taskset-id

    Esto marcará el conjunto de tareas (anteriormente ACTIVE) en el servicio como en estado PRIMARY.

  3. Espere a que la tarea alcance un estado de ejecución estable. Puede comprobar el estado con:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deployments"
  4. Una vez que el servicio tenga una tarea principal configurada con tareas en ejecución, vuelva a intentar actualizar el controlador de implementación.

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Discrepancia entre el tipo de detección de errores de implementación y el controlador de implementación

Los problemas siguientes se relacionan con una discrepancia entre el tipo de detección de errores de implementación y el controlador de implementación.

Interruptor de circuito de implementación con un controlador que no es de ECS

Mensaje de error: Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Solución: este error se produce al intentar habilitar la característica de interruptor de circuito de implementación en un servicio que no utiliza el controlador de implementación ECS. El interruptor de circuito de implementación solo es compatible con el controlador de implementación ECS.

  1. Compruebe el controlador de implementación actual del servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Actualice su servicio para usar el controlador de implementación ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Una vez que el servicio utilice el controlador de implementación ECS, active el interruptor de ccircuito de implementación:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"

Para obtener más información, consulte Detección de errores por el interruptor de circuito de implementación de Amazon ECS.

Reversión basada en alarmas con un controlador que no es de ECS

Mensaje de error: Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Solución: este error se produce al intentar configurar la reversión basada en alarmas en un servicio que no utiliza el controlador de implementación ECS. La característica de reversión basada en alarmas solo es compatible con el controlador de implementación ECS.

  1. Compruebe el controlador de implementación actual del servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Actualice su servicio para usar el controlador de implementación ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Una vez que el servicio utilice el controlador de implementación ECS, configure la reversión basada en alarmas:

    aws ecs update-service --cluster your-cluster-name --services your-service-name --deployment-configuration "alarms={alarmNames=[your-alarm-name],enable=true,rollback=true}"

Para obtener más información, consulte Detección de errores en la implementación de Amazon ECS por las alarmas de CloudWatch.

Discrepancia entre Service Connect y el controlador de implementación

Los siguientes problemas se relacionan con una discrepancia entre Service Connect y el controlador de implementación.

Controlador EXTERNAL con Service Connect

Mensaje de error: The EXTERNAL deployment controller type is not supported for services using Service Connect.

Solución: este error se produce al intentar utilizar el controlador de implementación EXTERNAL con un servicio que tiene activado Service Connect. El controlador EXTERNAL no es compatible con Service Connect.

  1. Compruebe si su servicio tiene activado Service Connect:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
  2. Si necesita usar el controlador de implementación EXTERNAL, desactive Service Connect actualizando el servicio:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
  3. Como alternativa, si debe usar Service Connect, utilice el controlador de implementación ECS en su lugar:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Service Connect con un controlador que no es de ECS

Mensaje de error: Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.

Solución: este error se produce al intentar configurar Service Connect en un servicio que no utiliza el controlador de implementación ECS. La característica Service Connect solo es compatible con el controlador de implementación ECS.

  1. Compruebe el controlador de implementación actual del servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Actualice su servicio para usar el controlador de implementación de ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Una vez que el servicio utilice el controlador de implementación de ECS, habilite Service Connect:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "enabled=true,namespace=your-namespace"

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Discrepancia entre el tipo de controlador y la estrategia de programación

Los siguientes problemas se relacionan con una discrepancia entre el tipo de controlador y la estrategia de programación.

Controlador CODE_DEPLOY con estrategia de programación DAEMON

Mensaje de error: The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.

Solución: este error se produce al intentar utilizar el controlador de implementación CODE_DEPLOY con un servicio que utiliza la estrategia de programación DAEMON. El controlador CODE_DEPLOY solo es compatible con la estrategia de programación REPLICA.

  1. Compruebe la estrategia de programación actual de su servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Si necesita implementaciones azul/verde, cambie su servicio para usar la estrategia de programación REPLICA:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Como alternativa, si debe utilizar la estrategia de programación DAEMON, utilice el controlador de implementación ECS en su lugar:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Controlador EXTERNAL con la estrategia de programación DAEMON

Mensaje de error: The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.

Solución: este error se produce al intentar utilizar el controlador de implementación EXTERNAL con un servicio de ECS que utiliza la estrategia de programación DAEMON. El controlador EXTERNAL solo es compatible con la estrategia de programación REPLICA.

  1. Compruebe la estrategia de programación actual de su servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Si necesita usar el controlador de implementación EXTERNAL, cambie su servicio para usar la estrategia de programación REPLICA:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. Como alternativa, si debe utilizar la estrategia de programación DAEMON, utilice el controlador de implementación ECS en su lugar:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Registros de servicios con tipo de lanzamiento externo

Mensaje de error: Service registries are not supported for external launch type.

Solución: este error se produce al intentar configurar la detección de servicios (registros de servicios) para un servicio que utiliza el tipo de lanzamiento EXTERNAL. La detección de servicios no es compatible con el tipo de lanzamiento EXTERNAL.

  1. Compruebe el tipo de lanzamiento actual de su servicio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
  2. Si necesita la detección de servicio, cámbielo para usar el tipo de lanzamiento EC2 o FARGATE:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --launch-type FARGATE
  3. Como alternativa, si debe usar el tipo de lanzamiento EXTERNAL, elimine la configuración del registro de servicio:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-registries "[]"

Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.

Reversión de una actualización del controlador de implementación

Si decide que desea volver al controlador de implementaciones anterior, puede optar por uno de los siguientes procedimientos:

  • Si utilizó AWS CloudFormation, puede utilizar la plantilla anterior para crear una nueva pila. Para más información, consulte Creación de una pila desde en la Guía del usuario de AWS CloudFormation.

  • Si utilizó la consola de Amazon ECS o la AWS CLI, puede actualizar el servicio. Para obtener más información, consulte Actualización de un servicio de Amazon ECS.

    Si utiliza el comando update-service, utilice la opción --deployment-controller y configúrela en el controlador de implementación anterior.