Risoluzione dei problemi relativi agli aggiornamenti della strategia di implementazione di Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi relativi agli aggiornamenti della strategia di implementazione di Amazon ECS

Questa sezione fornisce soluzioni ai problemi più comuni che potrebbero verificarsi durante la migrazione delle strategie di implementazione.

Più revisioni del servizio o set di attività

I seguenti problemi riguardano la disponibilità di più revisioni dei servizi per un'implementazione.

Set di più attività durante l'aggiornamento del controller di implementazione ECS

Messaggio di errore: 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.

Soluzione: questo errore si verifica quando si tenta di modificare il tipo di controller di implementazione di un servizio con più set di attività attivi. Per risolvere questo problema per il controller di implementazione CODE_DEPLOY o EXTERNAL:

  1. Controllare i set di attività attuali:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets"
  2. Attendere il completamento delle implementazioni in corso.

  3. Forzare una nuova implementazione per eliminare i set di attività:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
  4. Se necessario, eliminare manualmente i set di attività aggiuntivi:

    aws ecs delete-task-set --cluster your-cluster-name --service your-service-name --task-set task-set-id
  5. Quando rimane un solo set di attività, riprovare ad aggiornare il controller di implementazione.

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Set di attività primarie mancante durante l'aggiornamento del controller di implementazione ECS

Messaggio di errore: Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.

Soluzione: questo errore si verifica quando si tenta di modificare il tipo di controller di implementazione di un servizio che non dispone di un set di attività primarie. Per risolvere il problema:

  1. Verificare lo stato del servizio e i set di attività. Se nel servizio esiste un set di attività, deve essere contrassegnato come ACTIVE.

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

    Se non ci sono set di attività nello stato ACTIVE, effettuare la migrazione dell'implementazione. Per ulteriori informazioni, consultare Migration approaches.

  2. Se il servizio non dispone di attività in esecuzione, implementare almeno un'attività aggiornando il servizio:

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

    Ciò contrassegnerà l'attività (precedentemente ACTIVE) impostata nel servizio come PRIMARY.

  3. Attendere che l'attività raggiunga uno stato di esecuzione stabile. È possibile controllare lo stato con:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deployments"
  4. Dopo che il servizio dispone di un set di attività primario con attività in esecuzione, riprovare ad aggiornare il controller di implementazione.

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Mancata corrispondenza tra il tipo di rilevamento degli errori di implementazione e il controller di implementazione

I seguenti problemi si riferiscono a una mancata corrispondenza tra il tipo di rilevamento degli errori di implementazione e il controller di implementazione.

Interruttore automatico di implementazione con controller non ECS

Messaggio di errore: Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Soluzione: questo errore si verifica quando si tenta di abilitare la funzionalità di interruttore automatico di implementazione su un servizio che non utilizza il controller di implementazione ECS. L'interruttore automatico di implementazione è compatibile solo con il controller di implementazione ECS.

  1. Verificare il controller di implementazione attuale del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aggiornare il servizio per utilizzare il controller di implementazione ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Dopo che il servizio sta utilizzando il controller di implementazione ECS, abilitare l'interruttore automatico di implementazione:

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

Per ulteriori informazioni, consultare In che modo l’interruttore di implementazione Amazon ECS rileva i guasti.

Rollback basato sugli allarmi con controller non ECS

Messaggio di errore: Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.

Soluzione: questo errore si verifica quando si tenta di configurare il rollback basato sugli allarmi su un servizio che non utilizza il controller di implementazione ECS. La funzionalità di rollback basata sugli allarmi è compatibile solo con il controller di implementazione ECS.

  1. Verificare il controller di implementazione attuale del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aggiornare il servizio per utilizzare il controller di implementazione ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Dopo che il servizio sta utilizzando il controller di implementazione ECS, configurare il rollback basato sugli allarmi:

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

Per ulteriori informazioni, consultare In che modo CloudWatch gli allarmi rilevano gli errori di distribuzione di Amazon ECS.

Mancata corrispondenza tra Service Connect e il controller di implementazione

I seguenti problemi riguardano una mancata corrispondenza tra Service Connect e il controller di implementazione.

Controller EXTERNAL con Service Connect

Messaggio di errore: The EXTERNAL deployment controller type is not supported for services using Service Connect.

Soluzione: questo errore si verifica quando si tenta di utilizzare il controller di implementazione EXTERNAL con un servizio che ha Service Connect abilitato. Il controller EXTERNAL non è compatibile con Service Connect.

  1. Verificare se il servizio dispone di Service Connect abilitato:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
  2. Se è necessario il controller di implementazione EXTERNAL, disabilitare Service Connect aggiornando il servizio:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
  3. In alternativa, se è necessario utilizzare Service Connect, utilizzare invece il controller di implementazione ECS:

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

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Service Connect con controller non ECS

Messaggio di errore: Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.

Soluzione: questo errore si verifica quando si tenta di abilitare Service Connect su un servizio che non utilizza il controller di implementazione ECS. La funzionalità di Service Connect è compatibile solo con il controller di implementazione ECS.

  1. Verificare il controller di implementazione attuale del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aggiornare il servizio per utilizzare il controller di implementazione ECS:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Una volta che il servizio utilizza il controller di implementazione ECS, abilitare Service Connect:

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

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Mancata corrispondenza tra il tipo di controller e la strategia di pianificazione

I seguenti problemi riguardano una mancata corrispondenza tra il tipo di controller e la strategia di pianificazione.

Controller CODE_DEPLOY con strategia di pianificazione DAEMON

Messaggio di errore: The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.

Soluzione: questo errore si verifica quando si tenta di utilizzare il controller di implementazione CODE_DEPLOY con un servizio che utilizza la strategia di pianificazione DAEMON. Il controller CODE_DEPLOY è compatibile solo con la strategia di pianificazione REPLICA.

  1. Verificare l'attuale strategia di pianificazione del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Se hai bisogno di blue/green implementazioni, modifica il servizio per utilizzare la strategia di pianificazione: REPLICA

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. In alternativa, se è necessario utilizzare la strategia di pianificazione DAEMON, utilizzare invece il controller di implementazione ECS:

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

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Controller EXTERNAL con strategia di pianificazione DAEMON

Messaggio di errore: The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.

Soluzione: questo errore si verifica quando si tenta di utilizzare il controller di implementazione ESTERNO con un servizio ECS che utilizza la strategia di pianificazione DAEMON. Il controller EXTERNAL è compatibile solo con la strategia di pianificazione REPLICA.

  1. Verificare l'attuale strategia di pianificazione del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
  2. Se è necessario utilizzare il controller di implementazione EXTERNAL, cambiare il servizio per utilizzare la strategia di pianificazione REPLICA:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
  3. In alternativa, se è necessario utilizzare la strategia di pianificazione DAEMON, utilizzare invece il controller di implementazione ECS:

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

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Registri di servizio con tipo di avvio esterno

Messaggio di errore: Service registries are not supported for external launch type.

Soluzione: questo errore avviene quando si tenta di configurare il rilevamento servizi (registri dei servizi) per un servizio che utilizza il tipo di avvio EXTERNAL. Il rilevamento servizi non è compatibile con il tipo di avvio EXTERNAL.

  1. Controllare il tipo di avvio attuale del servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
  2. Se è necessario il rilevamento servizi, modificare il servizio in modo da utilizzare il tipo di avvio EC2 o FARGATE:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --launch-type FARGATE
  3. In alternativa, se è necessario utilizzare il tipo di avvio EXTERNAL, rimuovere la configurazione del registro del servizio:

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

Per ulteriori informazioni, consultare Controller e strategie di implementazione dei servizi Amazon ECS.

Ripristinare un aggiornamento del controller di implementazione

Se si decide di tornare al controller di implementazione precedente, è possibile eseguire una delle seguenti operazioni:

  • Se lo hai utilizzato CloudFormation, puoi utilizzare il modello precedente per creare un nuovo stack. Per ulteriori informazioni, consultare Create a stack from nella Guida per l'utente di CloudFormation .

  • Se hai utilizzato la console Amazon ECS o la AWS CLI, puoi aggiornare il servizio. Per ulteriori informazioni, consulta Aggiornamento di un servizio Amazon ECS.

    Se si utilizza il comando update-service, usare l'opzione --deployment-controller e impostarla sul controller di implementazione precedente.