Search
📝

Kind(Kubernetes IN Docker)

실제 쿠버네티스 클러스터를 내 로컬 PC 위의 Docker 컨테이너로 흉내내는 프로그램 도커 컨테이너 안에 쿠버네티스 클러스터를 만들어주는 도구

구조

┌────────────────────────────┐ │ 🖥️ macOS / Windows / Linux │ │ └── Docker Desktop │ │ └── Kind │ │ ├── control-plane (K8s master 역할) │ └── worker (Pod이 도는 노드) └────────────────────────────┘
Markdown
복사
Kind가 하는 일은, 도커 컨테이너 몇 개를 쿠버네티스 노드처럼 만들어서 완전한 쿠버네티스 클러스터처럼 동작하게 하는 것!!
구분
설명
비유
Kubernetes
컨테이너를 여러 서버에 배포하고 관리하는 시스템
실제 회사의 서버 운영센터
Kind
“그 쿠버네티스 운영센터”를 Docker 컨테이너로 흉내내는 도구
회사의 데이터센터를 “가상으로 만들어보는 시뮬레이터”
진짜 클러스터 : 클라우드나 물리 서버에 구축
Kind 클러스터 : Docker 위에 가상으로 구축

Kind를 사용하는 이유

쿠버네티스는 원래 서버 여러 대가 필요한 시스템이지만, 개발자가 학습 및 테스트할 때 서버 여러 대를 생성할 수는 없음. 그래서 나온 게 로컬 클러스터 에뮬레이터(종류 다양)
도구
설명
특징
Kind
Docker 위에 K8s 클러스터
가볍고 빠름
Minikube
VM 위에 K8s 클러스터
GUI/기능 풍부
Docker Desktop (K8s)
Docker에 내장된 K8s
설정 간단
K3s
경량 쿠버네티스 (리소스 적음)
IoT용 등에서도 사용

클러스터 생성

쿠버네티스는 기본 내장 클러스터가 존재하지 않음. 쿠버네티스는 그 자체가 클러스터를 다루는 시스템. 먼저 클러스터를 만들어야 쿠버네티스를 사용 가능 :
환경
클러스터 제공 방식
로컬 개발환경
Kind / Minikube / Docker Desktop
클라우드
AWS EKS / GCP GKE / Azure AKS
온프레미스(직접 서버)
kubeadm / kops / RKE 등으로 구축
정리하자면 :
개념
설명
Kubernetes
컨테이너 오케스트레이션 시스템 (컨테이너 자동 배포·확장·관리)
Cluster
여러 노드(서버)가 모여서 쿠버네티스를 구성한 단위
Kind
Docker 컨테이너를 이용해 로컬에서 “가짜 클러스터”를 만들어주는 도구
기본 클러스터
따로 없음. 직접 Kind/Minikube 등으로 생성해야 함

Kind vs 실제 쿠버네티스 클러스터

결론
Kind : 로컬 테스트용, 가벼움, 도커 안에서 흉내 실제 클러스터 : 운영용, 고가용성, 네트워크/스토리지 완전 지원
구분
Kind (로컬)
실제/프로덕션 k8s
설치 위치
Docker 컨테이너
물리 서버 / 가상머신 / 클라우드
노드 수
보통 1~2개 (테스트용)
수십~수백 노드 가능
목적
학습, 테스트, CI/CD
실서비스 운영
성능
제한적 (호스트 리소스 공유)
실제 서버 리소스 사용
영속성(Persistent Storage)
제한적 / 가상화
실제 볼륨, 네트워크 스토리지 연결 가능
네트워크
Docker NAT / 포트 포워딩
실제 LoadBalancer, Ingress, DNS 등 완전 지원
고가용성(HA)
거의 없음
Control plane + Node 다중화 가능

예시 비교

Kind

Docker 위에 1~2개 컨테이너 노드
Pod 실행, NodePort 테스트 가능
포트 접근은 kubectl port-forward 필요
학습용, 로컬 CI/CD 테스트용

실제 클러스터

AWS EKS / GCP GKE / 사내 데이터센터에 설치
Node 여러 대
Pod → NodePort / LoadBalancer → 외부 접속 바로 가능
PersistentVolume, Ingress, RBAC, 네트워크 정책 등 모두 지원
프로덕션 환경 운영

구조 비교 그림

[Kind 로컬 클러스터] [실제 클러스터] ┌───────────────────┐ ┌───────────────────────────────┐ │ macOS / Windows │ │ 클라우드 / 데이터센터 서버 │ │ └─ Docker │ │ │ │ └─ Kind │ │ ┌───── Control Plane ─────┐ │ │ └─ Node │ │ │ API Server / Scheduler │ │ │ └─ Pod │ │ │ Controller Manager │ │ │ │ │ └─────────────────────────┘ │ └───────────────────┘ │ ┌───── Worker Node ────────┐ │ │ │ Pod (nginx, 앱 등) │ │ │ │ Pod (다른 서비스) │ │ │ └─────────────────────────┘ │ │ ┌───── Worker Node ────────┐ │ │ │ Pod │ │ │ └─────────────────────────┘ │ └─────────────────────────────┘
Markdown
복사
주요 차이점 :
구분
Kind
실제 클러스터
노드 수
1~2 (Docker 컨테이너)
수십~수백 (물리/VM/클라우드)
외부 접근
kubectl port-forward 필요
NodePort, LoadBalancer, Ingress로 바로 접근 가능
스토리지
로컬 Docker volume
클라우드 블록 스토리지 / NFS / Ceph 등 사용 가능
고가용성
거의 없음
Control plane 다중화, Node 다중화 가능
성능/리소스
호스트 리소스 공유
전용 서버/VM 리소스 사용

결론

쿠버네티스는 관리 시스템이고, Kind는 그걸 테스트할 수 있게 도커 위에 만들어주는 가상 실험실