-
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 명령을 실행하면 에러가 발생할 수 있습니다.
- 첫 에러 메시지는 “failed to create a tmp single-platform image”.
→ 해결: 명령에 --all-platforms 옵션 추가
nerdctl push [이미지명] --all-platforms- 이후 “401 Unauthorized” 에러 발생
→ 이 경우는 ECR 인증이 안 된 것. 다음 명령어로 로그인해야 합니다.
aws ecr get-login-password --region eu-west-2 | nerdctl login --username AWS --password-stdin [ECR 주소]- 또 “403 Forbidden” 에러가 뜬다면
→ 노드의 IAM 역할에 ecr:PutImage 권한을 임시로 추가해 주세요.
권한과 인증 이슈 정리
이미지를 다시 푸시하려면 반드시 ECR에 인증과 적절한 권한이 필요합니다.
- ECR 인증: aws ecr get-login-password
- 이미지 푸시 권한: IAM에서 ecr:PutImage 정책 필요
전체 복구 순서 요약
- EKS 노드에 접속
- nerdctl로 이미지 확인
- ECR 인증 및 권한 처리
- --all-platforms 플래그를 이용해 이미지 푸시
- 이미지를 성공적으로 복구!
자주 사용하는 명령어 모음
복구 작업에서 사용한 주요 명령어는 다음과 같습니다.
nerdctl images nerdctl push [이미지명] --all-platforms aws ecr get-login-password --region [리전] | nerdctl login --username AWS --password-stdin [ECR 주소]빠른 이미지 복구 팁
노드에 남아있는 이미지가 마지막 희망일 때, nerdctl과 몇 가지 권한 설정이면 누구나 이미지를 ECR로 복구할 수 있습니다. IAM 정책 추가와 인증을 잊지 마세요!
반응형'AWS > EKS' 카테고리의 다른 글
AWS EKS에서 Karpenter와 Spot 인스턴스 인터럽션 쉽게 이해하기 (0) 2025.09.04 Karpenter로 EKS 클러스터 자동 확장 쉽게 시작하기 (0) 2025.09.04