Kubernetes

kind(Kubernetes in Docker)

journalctl 2025. 1. 12. 15:37

개요

맥북에서 로컬 클러스터를 구축하는데 k3s, kind 중에서 어떤걸 사용할까 고민하다 kind로 결정했다.

AWS를 사용하기에는 너무 비용이 많이 들어서 로컬 클러스터에서 작업해야겠다.


kind(Kubernetes in Docker)란?

https://kind.sigs.k8s.io/

kind는 Docker 컨테이너 노드를 사용하여 로컬 Kubernetes 클러스터를 실행하기 위한 도구이다.

go(1.16+) + docker / podman이 설치되어 있으면 사용이 가능하다.

Go 설치하기 (Mac)

  1. Brew를 통해서 go를 설치한다.
$ brew update
$ brew install go
  1. go version 확인해서 정상적으로 설치되었는지 확인한다.
$ go version
go version go1.22.2 darwin/arm64

Docker 설치하기 (Mac)

  1. Brew를 통해서 Docker를 설치한다.
$ brew install docker --cask
  1. Application에서 Docker를 실행하면 Docker Desktop 화면이 나온다.

Kind 설치 및 명령어 정리

$ go install sigs.k8s.io/kind@v0.24.0

Go 명령어를 통해서 kind를 설치한다.

$ kind create cluster --name test-cluster --config config.yml --image kindest/node:v1.20.7

test-cluster 이름을 가진 클러스터를 생성한다.

  • config : config.yml에 정의된 내용으로 클러스터를 생성한다.
  • Kind에서 Ingress가 필요할때 config.yml 파일
    kind: Cluster
    apiVersion: kind.x-k8s.io/v1alpha4
    nodes:
    - role: control-plane
      kubeadmConfigPatches:
      - |
        kind: InitConfiguration
        nodeRegistration:
          kubeletExtraArgs:
            node-labels: "ingress-ready=true"
      extraPortMappings:
      - containerPort: 80
        hostPort: 80
        protocol: TCP
      - containerPort: 443
        hostPort: 443
        protocol: TCP
  • image : 특정 쿠버네티스 버전이 필요할 경우 사용한다.

원하는 Kubernetes 버전이 있다면 docker hub에서 확인해서 사용하자.

https://hub.docker.com/r/kindest/node/tags

$ kind get kubeconfig --name test-cluster

test-cluster의 kubeconfig를 표시한다.

$ kind get clusters

kind로 생성한 클러스터 목록을 표시한다.

$ kubectl config get-contexts
CURRENT   NAME                                       CLUSTER                                    AUTHINFO            NAMESPACE
*         kind-test-cluster                          kind-test-cluster                          kind-test-cluster

contexts를 확인하면 kind가 자동으로 등록되어있다!


후기

편리하게 로컬에서 Helm chart로 오픈소스를 설치하거나 테스트할 클러스터가 필요할때 유용하게 자주 사용할 것 같다!