Amazon ECS 컨테이너 에이전트 설치 - Amazon Elastic Container Service

Amazon ECS 컨테이너 에이전트 설치

Amazon ECS 최적화 AMI를 사용하여 컨테이너 인스턴스를 실행하지 않은 경우에도 다음 절차 중 하나를 사용하여 수동으로 Amazon ECS 컨테이너 에이전트를 설치할 수 있습니다. Amazon ECS 컨테이너 에이전트는 Amazon ECS 최적화 AMI에 포함되어 있고 설치가 필요하지 않습니다.

참고

ECS 및 Docker 서비스 모두를 위한 systemd 단위에는 이 두 서비스를 시작하기 전에 완료하기 위해 cloud-init를 대기하는 명령이 있습니다. cloud-init 프로세스는 Amazon EC2 사용자 데이터의 실행이 완료될 때까지 완료된 것으로 간주되지 않습니다. 따라서 Amazon EC2 사용자 데이터를 통해 ECS 또는 Docker를 시작하면 교착 상태가 발생할 수 있습니다. Amazon EC2 사용자 데이터를 사용하여 컨테이너 에이전트를 시작하려면 systemctl enable --now --no-block ecs.service를 사용할 수 있습니다.

Amazon Linux 2 EC2 에이전트에 Amazon ECS 컨테이너 에이전트 설치

amazon-linux-extras 명령을 사용하여 Linux EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하려면 다음 단계를 사용합니다.

Amazon Linux 2 EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하는 방법

  1. Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon Linux 2 EC2인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.

  2. 인스턴스에 연결합니다.

  3. docker Amazon Linux 추가 리포지토리를 비활성화합니다. ecs Amazon Linux 추가 리포지토리는 자체 버전의 Docker와 함께 제공되므로 차후에 잠재적인 충돌을 방지하려면 추가로 docker을 비활성화해야 합니다. 이렇게 하면 Amazon ECS가 컨테이너 에이전트의 특정 버전과 함께 사용할 Docker 버전을 항상 사용할 수 있습니다.

    [ec2-user ~]$ sudo amazon-linux-extras disable docker
  4. ecs Amazon Linux 추가 리포지토리를 설치하고 활성화합니다.

    [ec2-user ~]$ sudo amazon-linux-extras install -y ecs; sudo systemctl enable --now ecs
  5. (선택 사항) 에이전트 내부 검사 API를 사용하여 에이전트가 실행 중인지 확인하고 새 컨테이너 인스턴스에 대한 일부 정보를 볼 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 내부 검사을 참조하세요.

    [ec2-user ~]$ curl -s http://localhost:51678/v1/metadata | python -mjson.tool
    참고

    응답이 없는 경우 인스턴스를 시작할 때 Amazon ECS 컨테이너 인스턴스 IAM 역할을 연결했는지 확인하세요. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.

Amazon Linux AMI EC2 인스턴스에 Amazon ECS 컨테이너 에이전트 설치

Amazon YUM repo를 사용하여 Amazon Linux AMI EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하려면 다음 단계를 사용합니다.

Amazon Linux AMI EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하는 방법

  1. Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon Linux AMI EC2 인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.

  2. 인스턴스에 연결합니다.

  3. ecs-init 패키지를 설치합니다. ecs-init에 대한 자세한 내용은 GitHub에서 소스 코드를 참조하세요.

    [ec2-user ~]$ sudo yum install -y ecs-init
  4. Docker 대몬을 시작합니다.

    [ec2-user ~]$ sudo service docker start

    출력:

    Starting cgconfig service:                                 [  OK  ]
    Starting docker:	                                   [  OK  ]
  5. ecs-init upstart 태스크를 시작합니다.

    [ec2-user ~]$ sudo service ecs start

    출력:

    ecs start/running, process 2804
  6. (선택 사항) 에이전트 내부 검사 API를 사용하여 에이전트가 실행 중인지 확인하고 새 컨테이너 인스턴스에 대한 일부 정보를 볼 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 내부 검사을 참조하세요.

    [ec2-user ~]$ curl -s http://localhost:51678/v1/metadata | python -mjson.tool

비 Amazon Linux EC2 인스턴스에 Amazon ECS 컨테이너 에이전트 설치

비 Amazon Linux EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하려면 리전 S3 버킷 중 하나에서 에이전트를 다운로드하고 설치할 수 있습니다.

참고

비 Amazon Linux AMI를 사용할 때 Amazon EC2 인스턴스는 cgroupfs 드라이버에 대한 cgroup 지원이 있어야 Amazon ECS 에이전트가 작업 수준 리소스 제한을 지원할 수 있습니다. 자세한 내용은 GitHub의 ECS 에이전트를 참조하세요.

참조용으로 아래에 각 시스템 아키텍처에 대해 최신 Amazon ECS 컨테이너 에이전트 파일이 리전별로 나열되어 있습니다.

리전(Region) 리전 이름 Amazon ECS init deb 파일 Amazon ECS init rpm 파일
us-east-2 미국 동부(오하이오)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

us-east-1 미국 동부(버지니아 북부)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

us-west-1 미국 서부(캘리포니아 북부)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

us-west-2 미국 서부(오레곤)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-east-1 아시아 태평양(홍콩)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-northeast-1 아시아 태평양(도쿄)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-northeast-2 아시아 태평양(서울)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-south-1 아시아 태평양(뭄바이)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-southeast-1 아시아 태평양(싱가포르)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ap-southeast-2 아시아 태평양(시드니)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

ca-central-1 캐나다(중부)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

eu-central-1 유럽(프랑크푸르트)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

eu-west-1 유럽(아일랜드)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

eu-west-2 유럽(런던)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

eu-west-3 유럽(파리)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

sa-east-1 남아메리카(상파울루)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64

Amazon ECS init aarch64(aarch64)

us-gov-east-1 AWS GovCloud(미국 동부)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

us-gov-west-1 AWS GovCloud(미국 서부)

Amazon ECS init amd64(amd64)

Amazon ECS init arm64(arm64)

Amazon ECS init x86_64(x86_64)

Amazon ECS init aarch64(aarch64)

비 Amazon Linux AMI를 사용하는 Amazon EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하는 방법

  1. Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon EC2 인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.

  2. 인스턴스에 연결합니다.

  3. 인스턴스에 최신 버전의 Docker를 설치합니다.

  4. 시스템이 최소 버전 요구 사항을 충족하는지 Docker 버전을 확인하세요.

    docker --version
  5. 운영 체제 및 시스템 아키텍처에 적합한 Amazon ECS 에이전트 파일을 다운로드하여 설치합니다.

    deb 아키텍처의 경우:

    ubuntu:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb ubuntu:~$ sudo dpkg -i amazon-ecs-init-latest.amd64.deb

    rpm 아키텍처의 경우:

    fedora:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm fedora:~$ sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
  6. (선택 사항) 인스턴스를 default 클러스터가 아닌 클러스터에 등록하려면, /etc/ecs/ecs.config 파일을 편집하고 다음 내용을 추가하세요. 다음 예제는 MyCluster 클러스터를 지정합니다.

    ECS_CLUSTER=MyCluster

    이들을 비롯한 기타 에이전트 런타임 옵션에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.

    참고

    필요할 경우 (시작 시 Amazon EC2 사용자 데이터를 사용하여 컨테이너 인스턴스에 다운로드할 수 있는) Amazon S3에 에이전트 환경 변수를 저장할 수 있습니다. 프라이빗 리포지토리의 인증 자격 증명과 같은 민감한 정보에는 이 방법을 권장합니다. 자세한 내용은 Amazon S3에 컨테이너 인스턴스 구성 저장태스크에 대한 프라이빗 레지스트리 인증 단원을 참조하세요.

  7. ecs 서비스를 시작합니다.

    ubuntu:~$ sudo systemctl start ecs

호스트 네트워크 모드로 Amazon ECS 에이전트 실행

Amazon ECS 컨테이너 에이전트를 실행하는 경우 ecs-inithost 네트워크 모드로 컨테이너 에이전트 컨테이너를 만듭니다. 이 모드는 컨테이너 에이전트 컨테이너에서 유일하게 지원되는 네트워크 모드입니다.

이렇게 하면 컨테이너 에이전트가 시작한 컨테이너가 Amazon EC2 인스턴스 메타데이터 서비스 엔드포인트(http://169.254.169.254)에 액세스하는 것을 차단할 수 있습니다. 이 경우 컨테이너가 컨테이너 인스턴스 프로필에서 IAM 역할 자격 증명에 액세스할 수 없으며 해당 작업이 IAM 태스크 역할 자격 증명만 사용합니다. 자세한 정보는 작업에 대한 IAM 역할을 참조하세요.

이렇게 하면 컨테이너 에이전트가 docker0 브리지에서 연결 및 네트워크 트래픽을 위해 경합하지 않습니다.