minikube(feat. lima) 환경에서 로컬 이미지를 가져오지 못하는 문제

개발한 어플리케이션 이미지를 지난 글에서 구축한 minikube  환경에 올려 보고자 하면서 문제를 발견했다.

환경정보

  • silicon m1 mac
  • minikube version v1.24.0
  • limactl 0.7.4


로컬에서 빌드한 이미지를 minikube 환경으로 가져 오려면, 가장 간단한 방법이 도커 host 와 minikube 를 연결하는 방법인데 다음과 같이 containerd runtime 은 지원이 안되는 모양이다.

minikube docker-env

이제 남은 방법은 docker-hub 를 쓰거나 private registry 를 사용하는 방법 밖에 남아있지 않은데, 로컬 환경에서 간단하게 처리할 수 있는 방법을 찾는 과정을 기술해보려한다.

https://blog.ichasco.com/kubernetes-primeros-pasos-con-minikube/

일단 minikube 의 아키텍쳐는 위와 같다. 그래서 찾아보니 방법은 minikube 쪽에 registry 를 띄우든 도커 host 쪽에 띄우든 registry 를 구축해서 그쪽을 경유해서 kube 쪽에서 이미지를 pull 받게 처리하는 것이다.

1.minukube addons 의 registry 사용

minikube에 addons 로 registry 를 지원하는 듯 해서 아래와 같이 구동하고 테스트를 진행했다.

먼저 개발이미지에 다음과 같이 태그를 설정했다.

minikube, addons registry 안내에 5000번 포트 말고 49190 포트(간헐적으로 변경됨)를 사용 하라고 했으나, 둘 다 해봤으나 둘다 registry에 push 가 안된다.

2.도커 host 쪽에 registry 컨테이너 세팅하여 사용

1) 도커 host에 registry 구축 후 minikube 에서 접속 확인
minikube, addons registry 가 잘 동작하지 않는 것 같으니 아래와 같이 docker host 에 registry 를 직접 띄우고 그쪽에 이미지를 넣기로 했다.

minikube 에서 자동으로 이미지를 가져올 수 있는지 확인 했는데 접속자체가 안되는 듯 하다.

kubectl run test-app --image=localhost:5000/test-ap:2021121401 --port=5000 --image-pull-policy=Never

2) minikube image 명령
minikube 에서 지원하는 image 명령를 테스트 해봤는데 역시 접속이 안되는듯 하다.

minikube --alsologtostderr image pull localhost:5000/test-app:2021121401

3) minikube cache 명령

minikube --alsologtostderr cache add localhost:5000/test-app:2021121401

minikube image 목록에 추가된 것을 확인했다 어쨌든 해결은 됐지만 속도도 느리고 곧 deprecate 될 명령어라고 한다.  

kubectl run test-app --image=localhost:5000/test-app:2021121401 --port=5000 --image-pull-policy=Never

로그를 보니 minikube 에서 도커 호스트의 registry 에 접속해서 가져오는 것 같지 않아서 다시 시도.

kubectl run test-app --image=test-app:2021121401

도커 호스트의 registry 에서 접속해서 가져오는게 아니라서 registry 를 구축할 필요는 없을 듯하다. 그럼 도커 호스트에서 직접 가져온다는 말인가? 다른 방법을 계속 살펴봐야겠다.

  • 참고
Sharing a local registry with minikube
How do I get a locally built docker image into minikube with the least amount of pain, and the greatest amount of speed?