로컬 쿠버네티스 환경에 애플리케이션 배포를 하면서 겪은 Docker Image Pull 에러.
이것을 해결할 수 있었던 몇 가지 방법에 대한 기록
환경
Mac Apple Sillicon
Minikube K8S 구성 환경
Local application build, Docker Image build 파일을 k8s 환경으로 배포 테스트
상황:
Deployment와 Service가 명시되어있는 yaml파일을 kubectl apply 했을 때 Pod의 상태가 “ErrImagePull”이라는 점이었다. docker ps 명령으로 확인해보면 분명 로컬에 image가 있음에도 에러가 발생하고있었다.
에러메세지는 다음과 같다.
pull access denied for cms, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied
원인은 간단했다. minikube로 구성된 쿠버네티스 환경 내에서 나의 로컬에 설치되어있는 Docker image를 찾지 못해서였다. 그래서 minikube와 나의 docker host와 연결하면 된다. 아래 명령어를 통해 연결할 수 있다.
eval $(minikube -p minikube docker-env)
나는 이것 말고도 다른 애플리케이션 배포도 진행해야할 건이 있었다. 이번에는 Vue front 관련 application 배포였고 또 Image pull error가 발생했다.(앞서 겪은 경험으로 이미 주의 상태였음에도..)
※ 에러메세지
docker: error response from daemon: pull access denied for...
이 과정에서 두번째 문제를 알게됨. 분명 docker login이 되어있음에도 로그인을 요구하는 내용은 아마도 다음과 같은 문제일 수도 있다.
**📌 이미지의 이름이 {사용자명}/{이미지명} 형식이 아니라 단순히 **{이미지명}**으로 되어있는 문제 **
나의 경우 Dockerhub에서 참조할 이미지도 아니었고, 로컬 이미지만 사용하면 됐기 때문에 이것이 문제가 될 줄은 몰랐다. 어쨌든 이미지명이 {사용자명}/{이미지명}형식이 되도록 관련 부분을 모두 수정 적용하여 해결되었다.