kind란? Docker로 만드는 로컬 쿠버네티스 클러스터(Kubernetes IN Docker)

쿠버네티스를 학습하거나 실험할 때 가장 먼저 필요한 건 “클러스터 환경”입니다. 하지만 매번 클라우드에 클러스터를 만들기는 번거롭고 비용도 듭니다. kind(Kubernetes IN Docker)는 이 문제를 해결하는 도구로, Docker 컨테이너를 쿠버네티스 노드처럼 사용해 로컬에서 빠르게 쿠버네티스 클러스터를 띄울 수 있게 해줍니다. 특히 CI 환경에서 쿠버네티스 테스트를 돌릴 때 kind가 자주 등장합니다.


빠른 체크포인트

  • kind는 Docker 컨테이너로 쿠버네티스 클러스터를 만드는 도구입니다.
  • VM 기반이 아니라 컨테이너 기반이라 생성/삭제가 빠르고 가볍습니다.
  • 멀티 노드(컨트롤 플레인 + 워커 여러 개) 구성이 쉽게 가능합니다.
  • 클러스터 구성을 YAML로 고정해 재현성이 좋습니다.
  • 로컬 학습에도 좋지만, 특히 테스트/CI 용도로 강점이 큽니다.

1. kind의 정체: “Docker 안에 쿠버네티스”

kind는 말 그대로 Kubernetes IN Docker입니다. 쿠버네티스 노드를 VM으로 띄우는 것이 아니라, 도커 컨테이너를 노드처럼 사용합니다. 즉, 컨트롤 플레인 노드도 컨테이너이고 워커 노드도 컨테이너입니다. 그래서 로컬 PC에서 빠르게 클러스터를 만들고 버리고 다시 만들기가 쉬워집니다.


2. kind가 필요한 이유

쿠버네티스는 원래 여러 노드에서 동작하는 환경을 전제로 합니다. 그런데 로컬에서 그걸 재현하려면 VM을 띄우거나 클라우드 환경이 필요합니다. kind는 Docker가 있는 환경이라면 거의 어디서든 클러스터를 만들 수 있고, 특히 다음 상황에서 효율적입니다.

  • PR 단위로 쿠버네티스 배포 테스트를 자동으로 돌리고 싶을 때
  • 멀티 노드 환경에서 네트워크나 스케줄링을 검증하고 싶을 때
  • 동일한 클러스터 구성을 팀원들이 똑같이 재현해야 할 때
  • “클러스터를 만들었다가 바로 지우는” 반복 실험을 하고 싶을 때

3. minikube와 kind의 차이

로컬 쿠버네티스 도구로 minikube와 kind가 자주 비교됩니다.

  • minikube는 로컬 개발과 학습 편의 기능이 많고, 애드온(Addons)이나 대시보드 등 체험이 편합니다.
  • kind는 Docker 기반이라 빠르고 가볍고, 설정을 YAML로 고정하기 쉬워 CI 테스트나 재현성 측면에서 강합니다.

결론적으로 “학습 편의”는 minikube, “테스트/CI와 재현성”은 kind가 더 잘 맞는 경우가 많습니다.


4. kind의 장점과 한계

장점

  • 빠른 생성/삭제로 실험 속도가 빠릅니다.
  • 멀티 노드 구성이 쉬워 분산 환경 테스트에 유리합니다.
  • 로컬과 CI에서 동일한 방식으로 쓸 수 있어 자동화에 유리합니다.

한계

  • 운영 환경과 100% 동일한 인프라(로드밸런서, 스토리지, 네트워크 정책)를 그대로 재현하기는 어렵습니다.
  • 로컬 Docker 리소스(CPU/메모리)를 많이 쓰면 성능이 급격히 떨어질 수 있습니다.
  • 외부 노출(LoadBalancer) 같은 부분은 추가 설정이 필요할 수 있습니다.

5. kind에서 가장 많이 쓰는 명령어

클러스터 생성/삭제

kind create cluster --name demo
kind get clusters
kind delete cluster --name demo

현재 클러스터 상태 확인

kubectl get nodes
kubectl get pod -A
kubectl cluster-info

6. 멀티 노드 클러스터를 YAML로 고정하기

kind는 설정 파일로 노드 구성을 고정할 수 있어서 “재현성”이 좋아집니다. 예를 들어 컨트롤 플레인 1개 + 워커 2개를 만들고 싶다면 config 파일로 생성할 수 있습니다.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker

그리고 생성은 다음처럼 합니다.

kind create cluster --name multi --config kind-config.yaml

정리

kind는 Docker 컨테이너로 쿠버네티스 노드를 구성해 로컬에서 빠르게 클러스터를 띄우는 도구입니다. 생성/삭제가 빠르고, 멀티 노드 구성과 재현성이 좋아서 실무에서는 특히 CI 테스트와 반복 실험에 많이 사용됩니다. 로컬에서 쿠버네티스를 학습하거나, 배포 YAML을 검증하는 환경이 필요하다면 kind는 매우 좋은 선택지입니다.