ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [KinD] KinD Cluster 로 Docker Image 업로드하기 (kind load docker-image)
    Kubernetes 2024. 2. 3. 09:12
    728x90
    반응형

    - 목차

     

    들어가며.

    이번 글에서는 KinD 로 생성된 k8s Cluster 내부로 Docker Image 를 Upload 하는 방법에 대해서 알아보도록 하겠습니다.

    KinD Cluster 는 Docker Hub 나 Harbor, ECR 등의 원격 이미지 레지스트리가 아닌 로컬에서 테스트 중인 도커이미지를 취급하는 경우가 존재합니다.

    이 과정에서 KinD 의 image Upload 명령어를 통해서 로컬의 도커 이미지를 KinD Cluster 내부로 업로드할 수 있습니다.

     

    KinD Cluster 생성하기.

    아래 링크는 KinD 로 k8s Cluster 를 실행시키는 방법에 대한 전반적인 설명을 다룹니다.

    https://westlife0615.tistory.com/407

     

    KinD 알아보기.

    - 목차 소개. KinD 는 "카인드" 라고 발음되며, 로컬 머신에서 쿠버네티스를 간편하게 실행할 수 있는 도구입니다. KinD 는 Kubernetes in Docker 의 약자이구요. Docker 를 활용하여 쿠버네티스 환경을 구성

    westlife0615.tistory.com

     

    또한 아래 명령어를 통해서 간단히 KinD k8s Cluster 를 실행하실 수 있습니다.

    kind create cluster --name test-cluster --image kindest/node:v1.24.0

     

    위 KinD 명령어 실행 후, 아래 이미지와 같이 1개의 Node 와 여러 기본 Pod 들을 확인할 수 있습니다.

     

     

    kind load docker-image.

    kind 의 load 명령어를 통해서 docker-image 를 KinD k8s Cluster 내부로 로드시킬 수 있습니다.

    저는 개인적으로 "spark:my-spark_3.2.3" 이라는 도커이미지가 존재해서 이 이미지를 KinD k8s Cluster 로 로드시켜보겠습니다.

    --name 옵션은 이미지를 업로드할 Cluster 의 이름을 지정해주셔야 합니다.

    kind load docker-image spark:my-spark_3.2.3 --name test-cluster
    Image: "spark:my-spark_3.2.3" with ID 
    "sha256:ae29c94ceb68f98046cb47eef4f4d3a8474fb67c2728cd2f16463e512ef91e3f" 
    not yet present 
    on node "test-cluster-control-plane", loading...

     

     

    Pod 생성하기.

    Docker Image 를 KinD k8s Cluster 로 로드시킨 이후에 업로드된 이미지를 기반으로 Pod 를 생성해보도록 하겠습니다.

    cat <<EOF> /tmp/pod.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: test
    spec:
      containers:
      - name: test
        image: spark:my-spark_3.2.3
    EOF
    
    kubectl apply -f /tmp/pod.yaml

     

    생성된 Pod 는 아래와 같이 성공적으로 Image 획득합니다.

    Container image "spark:my-spark_3.2.3" already present on machine

     

    하지만 아래와 같이 존재하지 않은 이미지로 Pod 를 생성하게 된다면, 아래와 같은 Events 를 확인하실 수 있습니다.

    cat <<EOF> /tmp/pod.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: test
    spec:
      containers:
      - name: test
        image: spark:not_exists
        imagePullPolicy: Never
    EOF
    
    kubectl apply -f /tmp/pod.yaml
    Container image "spark:not_exists" is not present with pull policy of Never
    Error: ErrImageNeverPull

     

     

    반응형
Designed by Tistory.