ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EKS 노드에서 삭제된 이미지를 ECR로 복구
    AWS/EKS 2025. 9. 4. 15:04
    반응형

    ‼️ 문제 상황: ECR에서 이미지가 삭제된 경우

    개발 환경에서 사용 중인 이미지가 ECR에서 삭제되어, 파이프라인 재빌드도 불가능할 때가 있습니다. 그 이미지가 남아있는 유일한 곳이 EKS 노드라면, 직접 노드에서 이미지를 복구해야 합니다.

    준비 환경 요약

    아래 환경에서 작업을 진행합니다.

    • EKS 클러스터: 1.30.3
    • Kubectl: 1.30.1
    • Containerd: 1.7.11
    • Runc: 1.1.11

    EKS 노드에 접속하는 방법

    EKS 노드에 원격으로 접근하려면 AWS 콘솔에서 세션 매니저를 사용하면 편리합니다. 인스턴스의 connect 옵션을 누르면 바로 접속할 수 있습니다.

    노드에서 이미지 확인하기

    관리자로 권한을 얻은 후, nerdctl 명령어로 노드에 저장된 이미지를 조회할 수 있습니다.

    sudo -s
    nerdctl images

    원하는 이미지를 찾으면, 해당 태그와 레포지토리 주소를 확인하세요.

    ECR로 이미지 푸시 시 문제 및 해결법

    이미지 복구를 위한 nerdctl push 명령을 실행하면 에러가 발생할 수 있습니다.

    1. 첫 에러 메시지는 “failed to create a tmp single-platform image”.
      → 해결: 명령에 --all-platforms 옵션 추가
    nerdctl push [이미지명] --all-platforms
    1. 이후 “401 Unauthorized” 에러 발생
      → 이 경우는 ECR 인증이 안 된 것. 다음 명령어로 로그인해야 합니다.
    aws ecr get-login-password --region eu-west-2 | nerdctl login --username AWS --password-stdin [ECR 주소]
    1. 또 “403 Forbidden” 에러가 뜬다면
      → 노드의 IAM 역할에 ecr:PutImage 권한을 임시로 추가해 주세요.

    권한과 인증 이슈 정리

    이미지를 다시 푸시하려면 반드시 ECR에 인증과 적절한 권한이 필요합니다.

    • ECR 인증: aws ecr get-login-password
    • 이미지 푸시 권한: IAM에서 ecr:PutImage 정책 필요

    전체 복구 순서 요약

    1. EKS 노드에 접속
    2. nerdctl로 이미지 확인
    3. ECR 인증 및 권한 처리
    4. --all-platforms 플래그를 이용해 이미지 푸시
    5. 이미지를 성공적으로 복구!

    자주 사용하는 명령어 모음

    복구 작업에서 사용한 주요 명령어는 다음과 같습니다.

    nerdctl images
    nerdctl push [이미지명] --all-platforms
    aws ecr get-login-password --region [리전] | nerdctl login --username AWS --password-stdin [ECR 주소]

    빠른 이미지 복구 팁

    노드에 남아있는 이미지가 마지막 희망일 때, nerdctl과 몇 가지 권한 설정이면 누구나 이미지를 ECR로 복구할 수 있습니다. IAM 정책 추가와 인증을 잊지 마세요!

     

    반응형
Designed by Tistory.