Mise à jour manuelle de l'agent de conteneur Amazon ECS (pour les applications non optimisées pour Amazon ECS AMIs) - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise à jour manuelle de l'agent de conteneur Amazon ECS (pour les applications non optimisées pour Amazon ECS AMIs)

Il se peut que vous deviez parfois mettre à jour l'agent de conteneur Amazon ECS pour corriger des bogues et intégrer de nouvelles fonctionnalités. La mise à jour de l'agent de conteneur Amazon ECS n'interrompt pas les tâches ou les services en cours d'exécution sur l'instance de conteneur.

Note

Les mises à jour de l'agent ne s'appliquent pas aux instances de conteneur Windows. Nous vous recommandons de lancer de nouvelles instances de conteneur pour mettre à jour le version de l'agent dans vos clusters Windows.

  1. Connectez-vous à votre instance de conteneur via SSH.

  2. Vérifiez si votre agent utilise la variable d'environnement ECS_DATADIR pour enregistrer son état.

    ubuntu:~$ docker inspect ecs-agent | grep ECS_DATADIR

    Sortie :

    "ECS_DATADIR=/data",
    Important

    Si la commande précédente ne renvoie pas la variable d'environnement ECS_DATADIR, vous devez arrêter toutes les tâches en cours d'exécution sur cette instance de conteneur avant de mettre à jour votre agent. Les agents récents avec la variable d'environnement ECS_DATADIR enregistrent leur état et sont possibles à mettre à jour sans problèmes tandis que les tâches sont en cours d'exécution.

  3. Arrêtez l'agent de conteneur Amazon ECS.

    ubuntu:~$ docker stop ecs-agent
  4. Supprimez le conteneur de l'agent.

    ubuntu:~$ docker rm ecs-agent
  5. Vérifiez que le répertoire /etc/ecs et le fichier de configuration de l'agent de conteneur Amazon ECS existent à l'emplacement /etc/ecs/ecs.config.

    ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
  6. Modifiez le fichier /etc/ecs/ecs.config et vérifiez qu'il contient au moins les déclarations de variable suivantes. Pour que votre instance de conteneur ne s'inscrive pas auprès du cluster par défaut, spécifiez le nom de votre cluster comme valeur pour ECS_CLUSTER.

    ECS_DATADIR=/data ECS_ENABLE_TASK_IAM_ROLE=true ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true ECS_LOGFILE=/log/ecs-agent.log ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] ECS_LOGLEVEL=info ECS_CLUSTER=default

    Pour plus d'informations sur ces options ainsi que d'autres options d'exécution d'agents, consultez la page Configuration de l'agent de conteneur Amazon ECS.

    Note

    Vous pouvez éventuellement stocker les variables d'environnement de votre agent dans Amazon S3 (qui peuvent être téléchargées sur vos instances de conteneur au moment du lancement à l'aide des données EC2 utilisateur Amazon). Ceci est particulièrement conseillé pour les informations sensibles, telles que les informations d'authentification pour les référentiels privés. Pour plus d’informations, consultez Stockage de la configuration de l'instance de conteneur Amazon ECS dans Amazon S3 et Utilisation d'images autres que des AWS conteneurs dans Amazon ECS.

  7. Extrayez la dernière image de l'agent de conteneur Amazon ECS depuis Amazon Elastic Container Registry Public.

    ubuntu:~$ docker pull public.ecr.aws/ecs/amazon-ecs-agent:latest

    Sortie :

    Pulling repository amazon/amazon-ecs-agent a5a56a5e13dc: Download complete 511136ea3c5a: Download complete 9950b5d678a1: Download complete c48ddcf21b63: Download complete Status: Image is up to date for amazon/amazon-ecs-agent:latest
  8. Exécutez l'agent de conteneur Amazon ECS le plus récent sur votre instance de conteneur.

    Note

    Utilisez les stratégies de redémarrage de Docker ou un gestionnaire de processus (tel que upstart ou systemd) pour traiter l'agent de conteneur comme un service ou un démon, et vous assurer qu'il est redémarré après avoir été arrêté. L'AMI optimisée pour Amazon ECS utilise le ecs-init RPM à cette fin, et vous pouvez consulter le code source de ce RPM sur. GitHub

    L'exemple suivant de commande d'exécution d'agent est divisé en lignes distinctes pour montrer chaque option. Pour plus d'informations sur ces options ainsi que d'autres options d'exécution d'agents, consultez la page Configuration de l'agent de conteneur Amazon ECS.

    Important

    Les systèmes d'exploitation sur lesquels cette --privileged option est SELinux activée doivent figurer dans votre docker run commande. En outre, pour les instances de conteneur SELinux activées, nous vous recommandons d'ajouter l':Zoption aux montages de /data volume /log et. Cependant, les montages hôtes de ces volumes doivent exister avant d'exécuter la commande. Dans le cas contraire, vous recevrez une erreur no such file or directory. Procédez comme suit si vous rencontrez des difficultés pour exécuter l'agent Amazon ECS sur une instance de conteneur SELinux activée :

    • Créez les points de montage des volumes hôtes sur votre instance de conteneur.

      ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
    • Ajoutez l'option --privileged à la commande docker run ci-dessous.

    • Ajoutez l'option :Z aux montages de volume de conteneur /log et /data (par exemple, --volume=/var/log/ecs/:/log:Z) dans la commande docker run ci-dessous.

    ubuntu:~$ sudo docker run --name ecs-agent \ --detach=true \ --restart=on-failure:10 \ --volume=/var/run:/var/run \ --volume=/var/log/ecs/:/log \ --volume=/var/lib/ecs/data:/data \ --volume=/etc/ecs:/etc/ecs \ --volume=/etc/ecs:/etc/ecs/pki \ --net=host \ --env-file=/etc/ecs/ecs.config \ amazon/amazon-ecs-agent:latest
    Note

    Si vous recevez un message Error response from daemon: Cannot start container, vous pouvez supprimer le conteneur ayant échoué à l'aide de la commande sudo docker rm ecs-agent, puis réessayer d'exécuter l'agent.