1 분 소요

문제 상황

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로 설정했음
  • imagePullPolicyNever : local docker image도 참조

deployment 생성

deployment.yml을 저장한 경로해서 다음 명령어를 입력해주면 적었떤 내용을 참조해 deployment를 생성한다.

kubectl create -f deployment.yml

이제는 docker image를 찾을 수 없다는 에러가 뜨지 않을 것이다!

References

카테고리:

업데이트:

댓글남기기