AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

AWS Batch에서 “DockerTimeoutError” 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

AWS Batch 컴퓨팅 환경의 작업이 실패하고 다음 오류가 반환됩니다. "DockerTimeoutError: Could not transition to created; timed out after waiting 4m0s." 오류를 해결하고 싶습니다.

간략한 설명

Docker 시작Docker 생성 API 호출이 4분보다 오래 걸리면 AWS 배치에서 DockerTimeoutError를 반환합니다.

참고: Amazon Elastic Container Service(Amazon ECS) 컨테이너 에이전트가 설정하는 기본 시간 초과 제한은 4분입니다.

이 오류가 가장 일반적으로 발생하는 이유는 다음과 같습니다.

  • AWS Batch 컴퓨팅 환경의 ECS 인스턴스 볼륨은 대기열에 있는 다른 모든 작업으로 인해 높은 I/O 부하를 받고 있습니다. 이러한 작업은 버스트 밸런스를 고갈시킬 수 있습니다.
  • 중지된 ECS 컨테이너는 Docker 대몬을 비울 만큼 빠르게 정리되지 않습니다. AWS Batch가 제공하는 기본 AMI 대신 사용자 지정 Amazon Machine Image(AMI)를 사용하는 경우 Docker 문제가 발생할 수 있습니다.

이러한 문제 중 어느 것도 오류의 원인이 아닌 경우 다음 조치를 취하여 문제를 추가로 해결하세요.

  • Docker 로그를 확인하여 오류의 원인을 식별하세요.
  • AWS Batch 컴퓨팅 환경과 연결된 ECS 클러스터의 ECS 인스턴스에서 Amazon ECS 로그 수집기 스크립트를 실행합니다.

해결 방법

버스트 밸런스 문제 해결

ECS 인스턴스의 버스트 밸런스 확인

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

다음 단계를 완료합니다.

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 클러스터를 선택합니다. 그런 다음 작업이 포함된 클러스터를 선택합니다.
    참고: 클러스터의 이름은 컴퓨팅 환경의 이름으로 시작하여 _Batch_와 숫자와 문자의 임의 해시입니다.
  3. 인프라 탭을 선택합니다.
  4. 인프라 열의 컨테이너 인스턴스 행 아래에서 인스턴스 ID를 선택합니다.
    참고: 실패한 작업의 인스턴스 ID를 찾으려면 AWS Batch describe-jobs AWS CLI 명령을 실행하세요. 인스턴스 ID는 containerInstanceArn에 대한 출력에 나타납니다.
  5. Amazon EC2 콘솔에서 인스턴스가 여전히 선택되어 있는지 확인합니다. 그런 다음 스토리지 섹션에서 volumeID에 대한 링크를 선택합니다.
  6. 블록 디바이스 팝업 창에서 볼륨 ID를 입력한 후 볼륨을 선택합니다.
  7. 모니터링 탭을 선택합니다. 그런 다음 버스트 밸런스를 선택하여 버스트 밸런스 지표를 확인하세요. 버스트 밸런스가 0으로 떨어지면 버스트 밸런스가 고갈됩니다.

관리형 컴퓨팅 환경을 위한 시작 템플릿 생성

참고: 시작 템플릿을 변경하는 경우 새 컴퓨팅 환경을 만들어야 합니다.

다음 단계를 완료합니다.

  1. Amazon EC2 콘솔을 연 다음 시작 템플릿을 선택합니다.
  2. 시작 템플릿 생성을 선택합니다.
  3. AMI ID의 경우 기본 Amazon ECS 최적화 AMI를 선택합니다.
  4. 스토리지(볼륨) 섹션의 볼륨 유형 열에서 볼륨 유형을 선택합니다. 그런 다음 크기(GiB) 열에 정수 값을 입력합니다.
    참고: 볼륨 유형으로 프로비저닝된 IOPS SSD(io1)를 선택한 경우, IOPS에 허용되는 정수 값을 입력하세요.
  5. 시작 템플릿 생성을 선택합니다.
  6. 시작 템플릿을 사용하여 새로운 관리형 컴퓨팅 환경을 생성하세요.

AMI를 사용하여 AWS 배치 컴퓨팅 환경 생성

참고: AMI를 변경하는 경우 AMI ID 파라미터를 업데이트할 수 없으므로 새 컴퓨팅 환경을 생성해야 합니다.

다음 단계를 완료합니다.

  1. Amazon EC2 콘솔을 엽니다.
  2. 인스턴스 시작을 선택하세요.
  3. 설치 마법사의 단계에 따라 인스턴스를 생성합니다.
    중요: 스토리지 추가 페이지에서 인스턴스의 볼륨 유형 또는 크기를 수정합니다. 볼륨 크기가 클수록 기준 성능은 높아지고 버스트 밸런스 보충 속도는 느려집니다. 높은 I/O 로드에서 더 나은 성능을 얻으려면 볼륨을 io1 유형으로 변경하세요.
  4. 인스턴스에서 컴퓨팅 리소스 AMI를 생성합니다.
  5. AMI ID가 포함된 AWS Batch용 컴퓨팅 환경을 생성합니다.

Docker 문제 해결

기본적으로 Amazon ECS 컨테이너 에이전트는 중지된 작업과 컨테이너 인스턴스가 사용하지 않는 Docker 이미지를 자동으로 정리합니다. 새 이미지로 새 작업을 실행하면 컨테이너 스토리지가 사용하지 않는 Docker 이미지로 채워질 수 있습니다. AWS Batch용 기본 AMI는 Amazon ECS 정리 설정을 최적화합니다.

다음 단계를 완료합니다.

  1. SSH를 사용하여 AWS Batch 컴퓨팅 환경의 컨테이너 인스턴스에 연결합니다.
  2. Amazon ECS 컨테이너 에이전트를 검사하려면 inspect ecs-agent Docker 명령을 실행합니다. 그런 다음 출력에서 env 섹션을 검토합니다.
    **참고:**작업 및 이미지 정리 속도를 높이려면 다음 변수의 값을 줄이세요.
    ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
    ECS_IMAGE_CLEANUP_INTERVAL
    ECS_IMAGE_MINIMUM_CLEANUP_AGE
    ECS_NUM_IMAGES_DELETE_PER_CYCLE
    자동 작업 및 이미지 정리를 위해 조정 가능한 파라미터를 사용할 수도 있습니다.
  3. 업데이트된 값으로 새 AMI를 생성합니다.
    -또는-
    새 환경 변수가 포함된 사용자 데이터를 사용하여 시작 템플릿을 생성합니다.

업데이트된 값으로 새 AMI 생성

다음 단계를 완료합니다.

  1. /etc/ecs/ecs.config 파일에서 에이전트 구성 파라미터를 설정합니다.
  2. 컨테이너 에이전트를 다시 시작합니다.
  3. 인스턴스에서 컴퓨팅 리소스 AMI를 생성합니다.
  4. AMI ID가 포함된 AWS Batch용 컴퓨팅 환경을 생성하세요.

새 환경 변수가 포함된 사용자 데이터를 사용하여 시작 템플릿 생성

다음 단계를 완료합니다.

  1. 사용자 데이터를 사용하여 시작 템플릿 생성.

    예를 들어, 다음 MIME 멀티 파일의 사용자 데이터는 컴퓨팅 리소스에 대한 기본 Docker 이미지 정리 설정을 재정의합니다.

    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
    --==MYBOUNDARY==
    Content-Type: text/x-shellscript; charset="us-ascii"
    #!/bin/bash
    echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config
    echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config
    --==MYBOUNDARY==--

    MIME 멀티파트 파일에 대한 자세한 내용을 알아보려면 cloud-init 웹 사이트의 MIME 멀티파트 파일을 참조하세요.

  2. 새 시작 템플릿을 사용하여 관리형 컴퓨팅 환경을 만드세요.

관련 정보

CloudWatch 지표를 게시하는 AWS 서비스

컴퓨팅 리소스 AMI

GitHub 웹사이트의 amazon-ecs-agent

AWS 공식
AWS 공식업데이트됨 7달 전
댓글 없음