Amazon Elastic Container Service(Amazon ECS) 컨테이너 인스턴스 여러 개와 ECS 컨테이너 에이전트가 있는데, 이 컨테이너 인스턴스가 연결 해제된 상태입니다. 연결이 해제되는 이유는 무엇입니까?

ECS 컨테이너 에이전트는 ECS 컨테이너 인스턴스를 클러스터에 연결하고, 실행하도록 지정된 컨테이너를 시작, 중지, 쿼리할 때 도커에 알려 줍니다. 에이전트가 서비스에 액세스하지 못하면 컨테이너 인스턴스가 ECS 클러스터의 멤버로 작동할 수 없습니다. 컨테이너 에이전트에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트를 참조하십시오.

정​상 작동하는 컨테이너 에이전트는 한 시간에 여러 번 연결이 해제되었다가 다시 연결될 수 있습니다. 연결 이벤트가 몇 분 동안만 계속된다면 컨테이너 에이전트 또는 컨테이너 인스턴스에 문제가 있​는 것이 아닙니다. 자세한 내용은 컨테이너 인스턴스 상태 변경 이벤트를 참조하십시오.

컨테이너 에이전트의 연결 해제 상태가 몇 분 이상 지속된다면 컨테이너 인스턴스는 ECS 클러스터의 멤버로 작동할 수 없습니다. 이 문제의 원인은 다음과 같습니다.

  • 인스턴스와 ECS 간의 통신을 차단하는 네트워킹 문제가 있습니다.
  • 컨테이너 에이전트에 ECS 엔드포인트와 통신하는 데 필요한 AWS Identity and Access Management(IAM) 권한이 없습니다.
  • 호스트 수준의 문제가 있거나 컨테이너 인스턴스 내부에 도커 데몬 수준의 문제가 있습니다.

결함의 원인을 파악하는 데 도움이 되는 단계는 다음과 같습니다. 이 명령은 AWS에서 제공하는 Amazon ECS에 최적화된 Amazon Machine Image(AMI)를 사용하여 지원됩니다.

참고: 다른 AMI를 사용하는 경우에는 변경해야 할 수 있습니다.

컨테이너 인스턴스에서 도커 데몬이 실행 중인지 확인

해당하는 컨테이너 인스턴스에서 도커 데몬이 실행 중인지 확인하려면 다음 명령을 실행하십시오.

ps aux | grep dockerd

이 명령의 출력은 다음과 비슷합니다.

root      2909  7.0  1.2 699128 52284 ?        Sl   13:29   0:04 /usr/bin/dockerd --default-ulimit nofile=1024:4096 --storage-driver devicemapper --storage-opt dm.thinpooldev=/dev/mapper/docker-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.fs=ext4 --storage-opt dm.use_deferred_deletion=true

컨테이너 인스턴스에서 도커 컨테이너 데몬이 실행 중인지 확인

해당하는 컨테이너 인스턴스에서 도커 컨테이너 데몬이 실행 중인지 확인하려면 다음 명령을 실행하십시오.

ps aux | grep docker-containerd

이 명령의 출력은 다음과 비슷합니다.

root      2916  0.8  0.3 361096 12396 ?        Ssl  13:29   0:02 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc

이 명령에서 예상하는 결과가 출력되지 않으면 다음 명령을 실행하여 도커 데몬을 중지했다가 시작하십시오.

sudo service docker stop && sudo service docker start

이 명령의 출력은 두 줄로 구성되어 호스트 수준에서 도커 서비스의 중지 및 시작이 정상적(OK)임을 나타내야 합니다.

컨테이너 인스턴스에서 컨테이너 에이전트가 실행 중인지 확인

해당하는 컨테이너 인스턴스에서 컨테이너 에이전트가 실행 중인지 확인하려면 다음 명령을 실행하십시오.

docker ps

참고: 이 컨테이너 에이전트는 기본적으로 ecs-agent를 도커 컨테이너의 이름으로 사용하지만, 자체 컨테이너를 실행하는 경우에는 달라질 수 있습니다.

ECS 컨테이너 에이전트가 실행 중이 아니라면 다음 명령으로 시작하십시오.

sudo start ecs

컨테이너 에이전트를 시작한 뒤에도 ECS 클러스터가 연결 해제된 상태라면 컨테이너 인스턴스와 연결된 IAM 인스턴스 프로파일에 필요한 IAM 권한이 있는지 확인하십시오.

IAM 인스턴스 프로파일에 필요한 권한이 있는지 확인

IAM 콘솔이나 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 컨테이너 인스턴스와 연결된 인스턴스 프로파일이 필요한 요구 사항에 맞는지 확인하십시오.

인스턴스 수준에서 컨테이너 에이전트 로그 파일을 분석하고, 자격 증명 오류가 없음을 확인하십시오.​ 컨테이너 에이전트 로그는 한 시간마다 교체​되며, 현재 날짜와 시간을 반영하여 접미사가 자동으로 변경됩니다. 다음 명령을 실행하여 ECS 로그를 표시합니다.

cat /var/log/ecs/ecs-agent.log.2017-10-24-13

참고: 문제가 발생한 날짜 범위를 포함시켜 명령을 업데이트하십시오.

컨테이너 에이전트에 필요한 자격 증명이 없는 경우, 로그에 다음과 비슷한 오류가 나타납니다.

2017-10-24T13:48:59Z [INFO] Registering Instance with ECS
2017-10-24T13:48:59Z [ERROR] Could not register: NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors
2017-10-24T13:48:59Z [CRITICAL] Could not create cluster: NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors
2017-10-24T13:48:59Z [ERROR] Error registering: NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2016년 08월 04일

업데이트된 날짜: 2018년 7월 19일