[Kubernetes] local docker image 사용하기
문제 상황
minikube가 관리하는 pod를 띄울 때 사용하는 docker image를 로컬에서 빌드한 docker image로 사용하려고 하니까
일단 pod는 띄워졌는데 실행이 되질 않았다. minikube dashboard
를 입력하니까 다음 에러를 확인할 수 있었다.
Failed to pull image “flask-image”: rpc error: code = Unknown desc = Error response from daemon: pull access denied for flask-image, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied
위에서 flask-image
는 직접 빌드해서 만든 local docker image 이름이다.
deployment 생성 시 pod도 같이 만들어주기 위해 등록하는 docker image는 기본적으로 docker hub에서 찾아본다.
그래서 위 에러가 발생했고, minikube에서 local docker image
를 사용하려면 별도 설정을 해줘야만 했다.
deployment 설정 파일 생성
deployment를 생성할 때 원래는 아래 명령어를 입력했었다.
kubectl create deployment flask-image-test --image=flask-image
이때 flask-image
는 직접 빌드해서 만든 local docker image
기 때문에 minikube 환경에서 해당 image 정보가 없다.
때문에 deployment 생성 시 local docker image
도 참조할 수 있도록 설정해줘야 한다.
다음은 deployment.yml로, deployment 생성 시 참조할 수 있는 설정을 함께 넣어줄 파일이다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-image-test
spec:
replicas: 3
selector:
matchLabels:
app: flask-image-test
tier: web-app
template:
metadata:
labels:
app: flask-image-test
tier: web-app
spec:
containers:
- name: flask-image-test
image: flask-image:latest
imagePullPolicy: Never
resources:
limits:
memory: "128M"
cpu: "500m"
ports:
- containerPort: 8080
protocol: TCP
- deployment 이름은
flask-image-test
로 설정했음 imagePullPolicy
→ Never : local docker image도 참조
deployment 생성
deployment.yml
을 저장한 경로해서 다음 명령어를 입력해주면 적었떤 내용을 참조해 deployment를 생성한다.
kubectl create -f deployment.yml
이제는 docker image를 찾을 수 없다는 에러가 뜨지 않을 것이다!
댓글남기기