SW Engineering/DevOps, SRE

[kubernetes] minikube에서 로컬 docker image 사용하기

SungWookKang 2023. 9. 7. 22:23
반응형

[kubernetes] minikube에서 로컬 docker image 사용하기

 

l  Kubernetes, Docker

 

일반적으로 로컬 컴퓨터에서 쿠버네티스(Kubernetes) 테스트할 minikube 환경을 많이 사용한다. 도커 데스크탑(docker desktop) 설치된 환경에서도 쿠버네티스를 활성화하면 minikube 활성화되어 동작한다. 이러한 환경에서 kubectl run 또는 yaml 파드를 생성할 , 로컬의 이미지를 사용할 경우 이미지를 가져올 없다는 오류와 함께 파드가 생성된 종료된다. 이번 포스트에서는 minikube 환경에서 로컬의 docker image 사용하여 파드를 생성하는 방법을 알아본다.

 

로컬의 docker images에서 커스텀 빌드된 이미지 proxysql 있다.

 

로컬의 도커 이미지를 사용하여 파드를 생성하면 오류가 발생한다.

kubectl run my-proxysql --image=proxysql

 

 

오류를 살펴보면 ErrImagePull이라는 상태 메시지를 있는데, 상태를 자세히 확인하기 위해 kubectl describe 명령을 사용하여 상세 메시지를 확인한다.

kubectl describe pods my-proxysql

 

 

마지막에 오류 메시지를 보면, 이미지를 가져올 없어 발생한 오류라는 것을 확인할 있다.

Failed to pull image "proxysql": rpc error: code = Unknown desc = Error response from daemon: pull access denied for proxysql, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

 

일반적으로 생각할 , 쿠버네티스를 사용하여 파드를 생성하면, 로컬의 이미지를 사용할 알았는데 그렇지 않다. 그래서 minikube에서 로컬의 이미지를 사용할 있도록 minikube 도커를 연결해야해는데, 다행히 쿠버네티스에서는 공식적으로 이러한 부분을 지원하고 있다.

 

아래 명령어를 사용하면, 현재 minikube에서 도커 host 연결할 있는 방법을 알려준다. 결과 정보를 바탕으로 일일이 등록해도 되지만, 마지막줄에서 도커 호스트와 한번에 연결할 있는 명령어를 제공하기 때문에 그대로 복사해서 사용할 있다.

minikube docker-env

 

 

마지막 줄의 명령어를 실행하여 minikube에서 docker host 연결한다.

eval $(minikube -p minikube docker-env)

 

명령어실행 도커에서 컨테이너를 조회해 보면 쿠버네티스의 컨테이너가 조회되는 것을 확인할 있다.

 

지금부터는 docker 이미지가 minikube에서 동작하는 driver(docker) 연결되었기 때문에 이제부터 생성되는 docker image minikube 위에 생성하게 된다.

 

다시 한번 이미지를 빌드 한다. 이번에는 이전과 차별을 두기 위해 my-proxysql 이라는 이름으로 이미지를 생성하였다.

docker build -t my-proxysql .

 

아래 명령을 사용하여 minikube 이미지 목록을 확인한다. 방금 빌드한 이미지 목록을 확인할 있다.

minikube image ls --format table

 

 

아래 명령을 사용하여 파드를 실행한다. 이때 로컬의 이미지를 사용하도록 --image-pull-policy=Never 옵션을 함께 사용한다. 정상적으로 파드가 실행중인 것을 확인할 있다.

kubectl run my-proxysql1 --image=my-proxysql --image-pull-policy=Never --restart=Never

 

 

 

[참고자료]

l  https://minikube.sigs.k8s.io/docs/handbook/pushing/#1-pushing-directly-to-the-in-cluster-docker-daemon-docker-env

l  https://www.baeldung.com/docker-local-images-minikube

l  https://egkatzioura.com/2020/03/08/use-local-docker-image-on-minikube/

 

 

 

2023-09-07 / Sungwook Kang / https://sungwookkang.com

 

 

도커파일, dockerfile, minikube, Kubernetes, 로컬이미지 사용, 파드생성, pod create, 도커이미지

반응형