Amazon ECS 컨테이너 에이전트 설치
Amazon ECS 최적화 AMI를 사용하여 컨테이너 인스턴스를 실행하지 않은 경우에도 다음 절차 중 하나를 사용하여 수동으로 Amazon ECS 컨테이너 에이전트를 설치할 수 있습니다. Amazon ECS 컨테이너 에이전트는 Amazon ECS 최적화 AMI에 포함되어 있고 설치가 필요하지 않습니다.
-
Amazon Linux 2 인스턴스의 경우,
amazon-linux-extras
명령을 사용하여 에이전트를 설치할 수 있습니다. 자세한 정보는 Amazon Linux 2 EC2 에이전트에 Amazon ECS 컨테이너 에이전트 설치을 참조하세요. -
Amazon Linux AMI 인스턴스의 경우, Amazon YUM repo를 사용하여 에이전트를 설치할 수 있습니다. 자세한 정보는 Amazon Linux AMI EC2 인스턴스에 Amazon ECS 컨테이너 에이전트 설치을 참조하세요.
-
비 Amazon Linux 인스턴스의 경우 리전 S3 버킷 중 하나 또는 Amazon Elastic Container Registry Public에서 에이전트를 다운로드할 수 있습니다. 리전 S3 버킷 중 하나에서 다운로드하는 경우 선택적으로 PGP 서명을 사용하여 컨테이너 에이전트의 유효성을 확인할 수 있습니다. 자세한 내용은 비 Amazon Linux EC2 에이전트에 Amazon ECS 컨테이너 에이전트 설치 섹션을 참조하세요.
Amazon ECS 및 도커 서비스 모두를 위한 systemd
단위에는 이 두 서비스를 시작하기 전에 완료하기 위해 cloud-init
를 대기하는 명령이 있습니다. cloud-init
프로세스는 Amazon EC2 사용자 데이터의 실행이 완료될 때까지 완료된 것으로 간주되지 않습니다. 따라서 Amazon EC2 사용자 데이터를 통해 Amazon ECS 또는 도커를 시작하면 교착 상태가 발생할 수 있습니다. Amazon EC2 사용자 데이터를 사용하여 컨테이너 에이전트를 시작하려면 systemctl enable --now --no-block ecs.service
를 사용할 수 있습니다.
Amazon Linux 2 EC2 에이전트에 Amazon ECS 컨테이너 에이전트 설치
amazon-linux-extras
명령을 사용하여 Amazon Linux 2 EC2 인스턴스에 ECS 컨테이너 에이전트를 설치하려면 다음 단계를 적용하십시오.
Amazon Linux 2 EC2 에이전트에 Amazon ECS 컨테이너 에이전트 설치
-
Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon Linux 2 EC2 인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.
-
인스턴스에 연결합니다.
-
docker
Amazon Linux 추가 리포지토리를 비활성화합니다.ecs
Amazon Linux 추가 리포지토리는 자체 버전의 Docker와 함께 제공되므로 향후 잠재적인 충돌을 방지하려면 추가로docker
를 꺼야 합니다. 이렇게 하면 Amazon ECS가 컨테이너 에이전트의 특정 버전과 함께 사용할 Docker 버전을 항상 사용할 수 있습니다.[ec2-user ~]$
sudo amazon-linux-extras disable docker
-
ecs
Amazon Linux 추가 리포지토리를 설치하고 활성화합니다.[ec2-user ~]$
sudo amazon-linux-extras install -y ecs; sudo systemctl enable --now ecs
-
(선택 사항) 에이전트 내부 검사 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 컨테이너 에이전트를 설치하는 방법
-
Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon Linux AMI EC2 인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.
-
인스턴스에 연결합니다.
-
ecs-init
패키지를 설치합니다.ecs-init
에 대한 자세한 내용은 GitHub에서 소스 코드를 참조하세요. [ec2-user ~]$
sudo yum install -y ecs-init
-
Docker 대몬을 시작합니다.
[ec2-user ~]$
sudo service docker start
출력:
Starting cgconfig service: [ OK ] Starting docker: [ OK ]
-
ecs-init
upstart 태스크를 시작합니다.[ec2-user ~]$
sudo service ecs start
출력:
ecs start/running, process
2804
-
(선택 사항) 에이전트 내부 검사 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의 Amazon ECS 에이전트
참조용으로 아래에 각 시스템 아키텍처에 대해 최신 Amazon ECS 컨테이너 에이전트 파일이 리전별로 나열되어 있습니다.
비 Amazon Linux AMI를 사용하는 Amazon EC2 인스턴스에 Amazon ECS 컨테이너 에이전트를 설치하는 방법
-
Amazon ECS에 액세스할 수 있는 IAM 역할로 Amazon EC2 인스턴스를 시작합니다. 자세한 정보는 Amazon ECS 컨테이너 인스턴스 IAM 역할을 참조하세요.
-
인스턴스에 연결합니다.
-
인스턴스에 최신 버전의 Docker를 설치합니다.
-
시스템이 최소 버전 요구 사항을 충족하는지 Docker 버전을 확인하세요.
docker --version
-
운영 체제 및 시스템 아키텍처에 적합한 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
-
(선택 사항) 인스턴스를
default
클러스터가 아닌 클러스터에 등록하려면,/etc/ecs/ecs.config
파일을 편집하고 다음 내용을 추가하세요. 다음 예제는MyCluster
클러스터를 지정합니다.ECS_CLUSTER=
MyCluster
이들을 비롯한 기타 에이전트 런타임 옵션에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.
참고 필요할 경우 (시작 시 Amazon EC2 사용자 데이터를 사용하여 컨테이너 인스턴스에 다운로드할 수 있는) Amazon S3에 에이전트 환경 변수를 저장할 수 있습니다. 프라이빗 리포지토리의 인증 자격 증명과 같은 민감한 정보에는 이 방법을 권장합니다. 자세한 내용은 Amazon S3에 컨테이너 인스턴스 구성 저장 및 태스크에 대한 프라이빗 레지스트리 인증 단원을 참조하세요.
-
ecs
서비스를 시작합니다.ubuntu:~$
sudo systemctl start ecs
호스트 네트워크 모드로 Amazon ECS 에이전트 실행
Amazon ECS 컨테이너 에이전트를 실행하는 경우 ecs-init
는 host
네트워크 모드로 컨테이너 에이전트 컨테이너를 만듭니다. 이 모드는 컨테이너 에이전트 컨테이너에서 유일하게 지원되는 네트워크 모드입니다.
이렇게 하면 컨테이너 에이전트가 시작한 컨테이너가 Amazon EC2 인스턴스 메타데이터 서비스 엔드포인트(http://169.254.169.254
)에 액세스하는 것을 차단할 수 있습니다. 이 경우 컨테이너가 컨테이너 인스턴스 프로필에서 IAM 역할 자격 증명에 액세스할 수 없으며 해당 작업이 IAM 태스크 역할 자격 증명만 사용합니다. 자세한 정보는 태스크 IAM 역할을 참조하세요.
이렇게 하면 컨테이너 에이전트가 docker0
브리지에서 연결 및 네트워크 트래픽을 위해 경합하지 않습니다.