[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://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, 도커이미지
'SW Engineering > DevOps, SRE' 카테고리의 다른 글
[Grafana] Grafana에서 이메일 알림 보내기 (0) | 2023.11.17 |
---|---|
[Kubernetes] 쿠버네티스에서 POD(파드)란? 그리고 POD 생성하기 (0) | 2023.09.08 |
[Docker] 컨테이너실행시 sh 스크립트 호출과 매개변수 사용 (0) | 2023.09.07 |
[Kubernetes] 쿠버네티스에서 파드 생성시 프라이빗 레지스트리 이미지 사용하기 (0) | 2023.08.09 |
[Kubernetes] vagrant 환경에서 Kubernetes 클러스터 구성하기 (0) | 2023.07.04 |