Risoluzione dei problemi relativi agli aggiornamenti della strategia di distribuzione 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 distribuzione di Amazon ECS

Questa sezione fornisce soluzioni ai problemi più comuni che potresti riscontrare durante la migrazione delle strategie di distribuzione.

Più revisioni del servizio o set di attività

I seguenti problemi riguardano la disponibilità di più revisioni del servizio per una distribuzione.

Set di attività multipli durante l'aggiornamento del controller di distribuzione 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 distribuzione di un servizio con più set di attività attivi. Per risolvere questo problema per il controller di EXTERNAL distribuzione CODE_DEPLOY or:

  1. Controlla i set di attività correnti:

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

  3. Forza una nuova distribuzione per ripulire i set di attività:

    aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
  4. Se necessario, elimina 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. Dopo che rimane solo un set di attività, riprova ad aggiornare il controller di distribuzione.

Per ulteriori informazioni, consulta Controller e strategie di distribuzione dei servizi Amazon ECS.

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

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 distribuzione di un servizio per il quale non è stato impostato un task primario. Per risolvere il problema:

  1. Verifica lo stato del servizio e i set di attività. ). Se nel servizio esiste un set di attività, deve essere contrassegnato comeACTIVE.

    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 ACTIVE stato, migra la distribuzione. Per ulteriori informazioni, consulta Approcci alla migrazione.

  2. Se il servizio non ha attività in esecuzione, distribuisci 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à come PRIMARY stato l'attività (precedentementeACTIVE) impostata nel servizio.

  3. Attendi che l'attività raggiunga uno stato di esecuzione stabile. Puoi 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 ha impostato un'attività principale con attività in esecuzione, riprova ad aggiornare il controller di distribuzione.

Per ulteriori informazioni, consulta Controller e strategie di distribuzione dei servizi Amazon ECS.

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

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

Interruttore automatico di installazione 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 distribuzione su un servizio che non utilizza il controller di distribuzione. ECS L'interruttore automatico di distribuzione è compatibile solo con il ECS controller di distribuzione.

  1. Controlla il controller di distribuzione corrente del tuo servizio:

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

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Dopo che il servizio ha utilizzato il controller ECS di distribuzione, abilita l'interruttore automatico di distribuzione:

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

Per ulteriori informazioni, consulta In che modo l'interruttore di distribuzione di 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 distribuzione. ECS La funzionalità di rollback basata sugli allarmi è compatibile solo con il controller di distribuzione. ECS

  1. Controlla l'attuale controller di distribuzione del tuo servizio:

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

    aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
  3. Dopo che il servizio ha utilizzato il controller di ECS distribuzione, configura 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, consulta In che modo CloudWatch gli allarmi rilevano gli errori di distribuzione di Amazon ECS.

Mancata corrispondenza tra Service Connect e il controller di distribuzione

I seguenti problemi si riferiscono a una mancata corrispondenza tra Service Connect e il controller di distribuzione.

EXTERNALcontroller 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 EXTERNAL distribuzione con un servizio con Service Connect abilitato. Il EXTERNAL controller non è compatibile con Service Connect.

  1. Verifica se il tuo servizio ha Service Connect abilitato:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
  2. Se devi utilizzare il controller di EXTERNAL distribuzione, disabilita 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 ECS distribuzione:

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

Per ulteriori informazioni, consulta Controller e strategie di distribuzione 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 dispositivo che non utilizza il controller di ECS distribuzione. La funzionalità Service Connect è compatibile solo con il controller ECS di distribuzione.

  1. Controlla il controller di distribuzione corrente del tuo servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
  2. Aggiorna il servizio per utilizzare il controller di distribuzione 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 distribuzione ECS, abilita 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, consulta Controller e strategie di distribuzione 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.

CODE_DEPLOYcontroller 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 distribuzione CODE_DEPLOY con un servizio che utilizza la strategia di pianificazione. DAEMON Il CODE_DEPLOY controller è compatibile solo con la strategia di pianificazione. REPLICA

  1. Verifica l'attuale strategia di pianificazione del tuo 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 REPLICA strategia di pianificazione:

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

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

Per ulteriori informazioni, consulta Controller e strategie di distribuzione dei servizi Amazon ECS.

Controller ESTERNO 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 distribuzione ESTERNO con un servizio ECS che utilizza la strategia di pianificazione DAEMON. Il controller EXTERNAL è compatibile solo con la strategia di pianificazione REPLICA.

  1. Verifica l'attuale strategia di pianificazione del tuo servizio:

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

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

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

Per ulteriori informazioni, consulta Controller e strategie di distribuzione 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 si verifica quando si tenta di configurare l'individuazione dei servizi (registri dei servizi) per un servizio che utilizza il tipo di avvio. EXTERNAL L'individuazione del servizio non è compatibile con il EXTERNAL tipo di avvio.

  1. Controlla il tipo di avvio attuale del tuo servizio:

    aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
  2. Se hai bisogno di scoprire il servizio, modifica il servizio in modo da utilizzare il tipo di FARGATE avvio EC2 o:

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

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

Per ulteriori informazioni, consulta Controller e strategie di distribuzione dei servizi Amazon ECS.

Ripristina un aggiornamento del controller di distribuzione

Se decidi di voler tornare al controller di distribuzione precedente, puoi effettuare una delle seguenti operazioni:

  • Se lo hai usato AWS CloudFormation, puoi usare il modello precedente per creare un nuovo stack. Per ulteriori informazioni, consulta Create a stack from nella Guida per l'AWS CloudFormation utente.

  • 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 utilizzi il comando update-service, utilizza l'--deployment-controlleropzione e impostala sul controller di distribuzione precedente.