- Minikube는 우선적으로 docker image를 pull 해 와서 사용한다. 하지만 보통 개발 공부를 하다 보면 로컬에서 빌드 된 이미지를 사용하여 minikube pod에 띄우는 경우가 많은데, 이런 경우에 image를 찾을 수 없다는 다음 에러를 만나게 된다
- (사실 tutorial을 잘 따라하였다면 이런 문제를 만나지 않겠지만) 혹시 비슷한 문제를 겪는 분들을 위해 기록해둔다
$ docker build -t <image>:<tag> .
$ kubectl run --image=<image>:<tag>
Failed to pull image "<image_name>": rpc error: code = Unknown desc = Error response from daemon: pull access denied for cms, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
- 요약하자면, 해당 문제는 쿠버네티스 pod에서 사용하는 docker 환경에서 이미지가 빌드되지 않고 로컬 환경에서 빌드되어 해당 이미지를 찾지 못해 생기는 문제이다.
- 로컬에서 도커 이미지를 확인해보자
# minikube 시작
$ minikube start
# 로컬 도커 이미지 목록 확인
$ docker images
...(로컬 도커 이미지 목록)
# 미니쿠베 쉘 접속
$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
# 미니쿠베 내 도커 이미지 목록
# 위에서 확인한 도커 이미지와는 전혀 별개의 환경임을 알 수 있다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cms 0.1.0 5e53a1d7f1ad 6 hours ago 1.06GB
k8s.gcr.io/kube-proxy v1.17.3 ae853e93800d 4 weeks ago 116MB
k8s.gcr.io/kube-controller-manager v1.17.3 b0f1517c1f4b 4 weeks ago 161MB
k8s.gcr.io/kube-apiserver v1.17.3 90d27391b780 4 weeks ago 171MB
k8s.gcr.io/kube-scheduler v1.17.3 d109c0821a2b 4 weeks ago 94.4MB
kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 3 months ago 90.8MB
k8s.gcr.io/coredns 1.6.5 70f311871ae1 4 months ago 41.6MB
kindest/kindnetd 0.5.3 aa67fec7d7ef 4 months ago 78.5MB
k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 4 months ago 288MB
kubernetesui/metrics-scraper v1.0.2 3b08661dc379 4 months ago 40.1MB
python 3.7.3 34a518642c76 9 months ago 929MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
gcr.io/k8s-minikube/storage-provisioner v1.8.1 4689081edb10 2 years ago 80.8MB
위 문제를 해결하기 위해 docker env를 minikube로 설정해 준다.
$ eval $(minikube docker-env)
다시 확인해 보면 위의 kube에서 확인했던 이미지와 동일한 이미지를 볼 수 있다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cms 0.1.0 5e53a1d7f1ad 6 hours ago 1.06GB
k8s.gcr.io/kube-proxy v1.17.3 ae853e93800d 4 weeks ago 116MB
k8s.gcr.io/kube-controller-manager v1.17.3 b0f1517c1f4b 4 weeks ago 161MB
k8s.gcr.io/kube-apiserver v1.17.3 90d27391b780 4 weeks ago 171MB
k8s.gcr.io/kube-scheduler v1.17.3 d109c0821a2b 4 weeks ago 94.4MB
kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 3 months ago 90.8MB
k8s.gcr.io/coredns 1.6.5 70f311871ae1 4 months ago 41.6MB
kindest/kindnetd 0.5.3 aa67fec7d7ef 4 months ago 78.5MB
k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 4 months ago 288MB
kubernetesui/metrics-scraper v1.0.2 3b08661dc379 4 months ago 40.1MB
python 3.7.3 34a518642c76 9 months ago 929MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
gcr.io/k8s-minikube/storage-provisioner v1.8.1 4689081edb10 2 years ago 80.8MB
이제 해당 쉘에서 이미지를 빌드하면 kube 도커 환경에서 빌드가 된다.
$ docker build -t <image>:<tag> .
$ kubectl run --image=<image>:<tag>
그래도 잘 되지 않는다면 --image-pull-policy=Never
옵션과 함께 사용해보자
$ kubectl run --image=<image>:<tag> --image-pull-policy=Never
'backend' 카테고리의 다른 글
[book] The linux command line: Rediretion - standard intput, output, error (0) | 2020.12.13 |
---|---|
aws ec2에 카프카 세팅해보기 (공부용 kafka) (1) | 2020.12.04 |
centos에서 uwsgi 설치 오류 해결 (the gcc failed with exit status 1) (0) | 2019.03.12 |
serverless 사용해보기 (0) | 2019.02.15 |
TIL 문제풀이 (0) | 2018.06.05 |