이미지가 없다고 에러가 뜨는 이유 (이미지 풀 정책)

2025. 2. 23. 01:13·쿠버네티스/cka

저번 포스팅 마지막에 Spring boot 프로젝트를 이미지로 빌드 후 파드로 띄웠는데,

마지막에 ImagePullBackOff 에러가 발생하는 것을 볼 수 있었다.

 

이번 포스팅은 이미지가 없다고 에러가 뜨는 이유에 대해서 작성하려고 한다.


  1. 이미지가 없다고 에러가 뜨는 이유.
    1. 이미지 풀 정책
      • 쿠버네티스가 yaml 파일을 읽어들여 podf를 생성할 때,
        이미지를 어떻게 Pull을 받아올 건지에 대한 정책을 의미한다.
        • Always : 로컬에서 이미지를 가져오지 않고, 무조건 레지스토리(=Dockerhub, ECR 과 같은 원격 이미지 지정소) 에서 가져온다.
        • IfNotPresent : 로컬에서 이미지를 먼저 가져온다. 로컬에 이미지가 없는 경우에만 레지스트리에서 가져온다.
        • Never : 로컬에서만 이미지를 가져온다.
      • 매니페스트 파일에 이미지 풀 정책 설정 방법
        • spec/containers 하위에 `imagePulPolicy : Always` 를 입력한다.
      • 매니페스트 파일에 이미지 풀 정책을 설정하지 않은 경우
        • 이미지 태그가 ` latest` 이거나 명시되지 않은 경우 : Always
        • 이미지 태그가 `latest` 가 아닌 경우 : IfNotPreset 
          # pod 로 생성한다
          apiVersion: v1
          kind: Pod
          
          # pod 에 대한 기본 정보 생성
          metadata :
            name : spring-pod
          
          # spec에 대한 세부 정보 지정.
          spec : 
            containers :
            - name : spring-container
              # spring-server image를 활용하여 image 를 띄울 것
              image : spring-server
              ports:
                - containerPort: 8080
        • 위와 같이 설정된 경우에는, image 뒤에 tag 가 적혀있지 않아 Always로 설정되어 있음.
        • 즉, 내가 만들었던 이미지는 local image 인데, 레지스트에서만 파일을 가져오므로,
          `ImagePullBackOff` 에러가 발생했던 것.
        • sprin-server 을 dockerhub 에 올리거나, imagePulPolicy 를 IfNotPresent혹은 Never 로 설정하면 에러가 발생하지 않는다. 
  2. 에러 없이 이미지 가져오기
    1. 이미지 풀 정책 변경하기.
      • spring-pod.yaml 파일 아래와 같이 수정하기
        # pod 로 생성한다
        apiVersion: v1
        kind: Pod
        
        # pod 에 대한 기본 정보 생성
        metadata :
          name : spring-pod
        
        # spec에 대한 세부 정보 지정.
        spec : 
          containers :
          - name : spring-container
            # spring-server image를 활용하여 image 를 띄울 것
            image : spring-server
            ports:
              - containerPort: 8080
            imagePullPolicy : IfNotPresent
      • 기존의 pod 삭제 후 새로 생성하기
        • pod 삭제하기
        • pod 생성하기
    2. Pod 프로그램에 접속하기
      • pod 내부에서 직접 요청 보내기
      • 포트 포워딩 사용하기
        • localhost:8080 으로 접속하면 아무것도 나오지 않음
          localhost:12345로 접속해야 함.(pod 내부의 spring boot 프로젝트가 응답함)

'쿠버네티스 > cka' 카테고리의 다른 글

프론트엔드(HTML, CSS, Nginx) 서버를 Pod로 띄워보기  (0) 2025.02.25
백엔드 Nest.js 서버를 Pod 로 띄워보기  (0) 2025.02.24
Windows VS code 환경에서 백엔드(Spring Boot) 서버를 파드(Pod)로 띄워보기  (0) 2025.02.19
Pod 로 띄운 프로그램에 접속되지 않는 이유와 해결방법.  (0) 2025.02.11
Pod 의 의미와 Nginx 를 Pod 로 띄워보기.  (0) 2025.02.10
'쿠버네티스/cka' 카테고리의 다른 글
  • 프론트엔드(HTML, CSS, Nginx) 서버를 Pod로 띄워보기
  • 백엔드 Nest.js 서버를 Pod 로 띄워보기
  • Windows VS code 환경에서 백엔드(Spring Boot) 서버를 파드(Pod)로 띄워보기
  • Pod 로 띄운 프로그램에 접속되지 않는 이유와 해결방법.
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (12)
      • git&github (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스
    공존성테스트
    QAKOREA
    도커
    네트워크 테스트
    qa
    vi에디터
    로스트아크api
    테스트 결과보고서
    qa conference
    테스트스크립트
    .cpu
    앱공존성
    개발자에서아키텍트로
    postman
    로스트아크
    LOSTARK
    qa 컨퍼런스
    스터디
    애플리케이션로그
    application log
    쿠버네티스
    사드웨어리소스
    k8s
    e2c
    포스트맨
    python
    API
    linux
    cka
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
이미지가 없다고 에러가 뜨는 이유 (이미지 풀 정책)
상단으로

티스토리툴바