로컬 PC에서 kubernetes에 배포되어 micro service환경에서 개발/테스트할 수 있도록 하는 가벼운 kubernetes 배포판에 대해 정리함.
| 항목 | k3s | kind | k3d | Docker Desktop K8s | OrbStack | MicroK8s |
|---|---|---|---|---|---|---|
| 개발사 | Rancher (SUSE) | Kubernetes SIG | Rancher (SUSE) | Docker Inc. | OrbStack Inc. | Canonical |
| 기반 | 경량화 K8s 바이너리 | Docker 컨테이너 | Docker + k3s | 내장 K8s | 내장 K8s (Linux VM) | snap 패키지 |
| 지원 OS | Linux (권장), macOS, Windows | Linux, macOS, Windows | Linux, macOS, Windows | macOS, Windows | macOS (Apple Silicon/Intel) | Linux (Ubuntu 권장), macOS, Windows |
| 사용 목적 | 프로덕션·엣지·IoT | CI/CD, 테스트 | 로컬 개발, 멀티 클러스터 | GUI 중심 개발 | macOS 개발 최적화 | 프로덕션·개발·엣지 |
| 멀티 클러스터 | ❌ (단일) | ✅ | ✅ | ❌ | ❌ | ❌ (단일) |
| ARM 지원 | ✅ | ✅ | ✅ | ✅ (Apple Silicon) | ✅ (Apple Silicon) | ✅ |
| Air-gap 지원 | ✅ | ✅ (이미지 사전 로드) | ✅ | ❌ | ❌ | 제한적 |
| 라이선스 | Apache 2.0 | Apache 2.0 | MIT | 유료 (비상업 무료) | 유료 (개인 무료) | Apache 2.0 |
| 배포판 | Linux | macOS | Windows |
|---|---|---|---|
| k3s | curl -sfL https://get.k3s.io \| sh - | ❌ 미지원 (VM 필요) | ❌ 미지원 (WSL2 사용) |
| kind | go install sigs.k8s.io/kind@latest 또는 brew install kind | brew install kind | choco install kind 또는 winget install kind |
| k3d | curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh \| bash | brew install k3d | choco install k3d |
| Docker Desktop K8s | ❌ 미지원 | Docker Desktop 설치 → Settings → Kubernetes → Enable | Docker Desktop 설치 → Settings → Kubernetes → Enable |
| OrbStack | ❌ 미지원 | brew install orbstack 또는 orbstack.dev 에서 dmg 설치 | ❌ 미지원 |
| MicroK8s | sudo snap install microk8s --classic | brew install ubuntu/microk8s/microk8s && microk8s install | winget install Canonical.MicroK8s |
| 배포판 | kubeconfig 설정 |
|---|---|
| k3s | export KUBECONFIG=/etc/rancher/k3s/k3s.yaml |
| kind | kind create cluster 실행 시 자동으로 ~/.kube/config 업데이트 |
| k3d | k3d cluster create 실행 시 자동으로 ~/.kube/config 업데이트 |
| Docker Desktop K8s | Docker Desktop이 자동으로 ~/.kube/config 업데이트 |
| OrbStack | orb CLI 또는 GUI에서 자동 설정 |
| MicroK8s | microk8s kubectl config view --raw > ~/.kube/config 또는 microk8s config > ~/.kube/config |
| 배포판 | 기본 생성 명령어 | 예시 (포트 매핑, 이름 지정 등) |
|---|---|---|
| k3s | curl -sfL https://get.k3s.io \| sh - (설치=기동) | curl -sfL https://get.k3s.io \| INSTALL_K3S_EXEC="--disable=traefik" sh - |
| kind | kind create cluster | kind create cluster --name my-cluster --config kind-config.yaml |
| k3d | k3d cluster create | k3d cluster create my-cluster -p "8080:80@loadbalancer" --agents 2 |
| Docker Desktop K8s | GUI에서 Enable 체크 | 추가 설정은 Docker Desktop UI에서 |
| OrbStack | GUI 또는 orb start k8s | orb start k8s (버전 선택 가능) |
| MicroK8s | 설치 후 자동 기동 | microk8s enable dns ingress storage |
| 배포판 | 기동 (Start) | 중지 (Stop) | 재시작 (Restart) | 삭제 (Delete) |
|---|---|---|---|---|
| k3s | sudo systemctl start k3s | sudo systemctl stop k3s | sudo systemctl restart k3s | /usr/local/bin/k3s-uninstall.sh |
| kind | docker start <노드 컨테이너> | docker stop <노드 컨테이너> | — | kind delete cluster --name <name> |
| k3d | k3d cluster start <name> | k3d cluster stop <name> | k3d cluster stop <name> && k3d cluster start <name> | k3d cluster delete <name> |
| Docker Desktop K8s | Docker Desktop 실행 (자동 기동) | Settings → Kubernetes → Reset 또는 Docker Desktop 종료 | Docker Desktop 재시작 | Settings → Kubernetes → Disable → Reset |
| OrbStack | orb start / GUI 실행 | orb stop / GUI 종료 | orb restart | GUI에서 Reset 또는 brew uninstall orbstack |
| MicroK8s | microk8s start | microk8s stop | microk8s stop && microk8s start | sudo snap remove microk8s |
| 배포판 | 상태 확인 | 노드 확인 | 대시보드 접속 | 로그 확인 |
|---|---|---|---|---|
| k3s | sudo systemctl status k3s | sudo k3s kubectl get nodes | kubectl proxy 후 브라우저 접속 | journalctl -u k3s -f |
| kind | kind get clusters | kubectl get nodes | kubectl proxy | docker logs <kind-node> |
| k3d | k3d cluster list | kubectl get nodes | kubectl proxy | k3d node logs <name> |
| Docker Desktop K8s | Docker Desktop 트레이 아이콘 | kubectl get nodes | Docker Desktop → Dashboard | Docker Desktop 로그 |
| OrbStack | orb status | kubectl get nodes | OrbStack GUI | OrbStack GUI |
| MicroK8s | microk8s status | microk8s kubectl get nodes | microk8s enable dashboard 후 microk8s dashboard-proxy | microk8s kubectl logs -n kube-system ... |
| 배포판 | 장점 | 단점 |
|---|---|---|
| k3s | • 단일 바이너리 (~70MB), 극히 낮은 메모리 사용 (512MB RAM) • 프로덕션 수준 안정성 (CNCF 인증) • Air-gap 환경 완벽 지원 • IoT·엣지·ARM 최적화 • 빠른 기동 시간 (수 초 이내) • 멀티노드 클러스터 구성 가능 | • macOS/Windows 네이티브 미지원 • 멀티 클러스터 관리 불편 • 일부 K8s 기능 경량화로 제거됨 |
| kind | • 공식 K8s 완전 호환 (SIG 공식 프로젝트) • 멀티노드·멀티 클러스터 손쉽게 구성 • CI/CD 파이프라인(GitHub Actions 등)에 최적화 • 사전 구성된 이미지로 빠른 프로비저닝 • 네트워크 정책 테스트에 적합 | • 컨테이너 안에서 실행 → 리소스 오버헤드 • 퍼시스턴트 볼륨 설정 복잡 • LoadBalancer 타입 서비스 기본 미지원 (MetalLB 필요) • 컨테이너 재시작 시 데이터 소실 가능 |
| k3d | • k3s + Docker의 장점 결합 • 멀티 클러스터·멀티노드 손쉽게 구성 • 포트 매핑, 볼륨 마운트 간편 • k3s의 경량성 유지하면서 Docker 생태계 활용 • 빠른 클러스터 생성/삭제 | • Docker가 필수 의존성 • 완전한 K8s 호환성은 kind에 비해 낮음 • Docker Desktop 유료화 정책 영향 받음 |
| Docker Desktop K8s | • GUI 기반 쉬운 설정 • Docker와 완벽 통합 (이미지 공유 즉시 가능) • Windows/macOS 공식 지원 • kubectl, Docker CLI 자동 설정• 볼륨 마운트가 로컬 파일과 자연스럽게 연동 | • 비상업적 사용만 무료 (상업 이용 시 유료) • 리소스 사용량 많음 • 단일 클러스터만 지원 • K8s 버전 선택 제한적 • Air-gap 미지원 |
| OrbStack | • macOS에서 Docker Desktop 대비 극히 낮은 리소스 사용 • Apple Silicon 네이티브 최적화 (Rosetta 불필요) • 빠른 VM 기동 (<1초) • Linux 컨테이너 + K8s + Linux VM을 하나의 앱에서 • ~/.kube/config 자동 설정• 개인 사용자 무료 | • macOS 전용 (Linux/Windows 미지원) • 상업 이용 시 유료 • 단일 클러스터만 지원 • 커뮤니티/생태계가 상대적으로 작음 • Air-gap 미지원 |
| MicroK8s | • Ubuntu/Canonical 공식 지원, snap으로 간편 설치 • 애드온 시스템으로 기능 확장 용이 ( dns, ingress, storage, registry, gpu 등)• CNCF 인증 완전 호환 • HA(고가용성) 클러스터 구성 가능 • 프로덕션 운영 가능 수준 • GPU 워크로드 지원 ( microk8s enable gpu) | • Ubuntu/Linux 환경에서 가장 최적화 (다른 OS는 VM 경유) • snap 의존성 (일부 환경에서 제약) • 메모리 사용량이 k3s보다 높음 • 초기 설정 학습 곡선 존재 |
| 사용 시나리오 | 추천 배포판 | 이유 |
|---|---|---|
| Air-gap / 온프레미스 프로덕션 | k3s | 완전한 Air-gap 지원, 경량, CNCF 인증 |
| CI/CD 파이프라인 (GitHub Actions 등) | kind | 공식 K8s SIG 지원, 멀티 클러스터, 빠른 프로비저닝 |
| 로컬 멀티 클러스터 개발 | k3d | k3s 경량성 + 멀티 클러스터 손쉬운 구성 |
| macOS 개발 환경 (성능 중시) | OrbStack | 낮은 리소스, Apple Silicon 최적화 |
| Windows/macOS GUI 사용자 | Docker Desktop K8s | 가장 쉬운 설정, Docker 연동 |
| Ubuntu 서버 / IoT / GPU 워크로드 | MicroK8s | Canonical 공식 지원, GPU 애드온, 안정적 |
| 반도체 fab Air-gap 온프레미스 K8s | k3s | 경량 바이너리, Air-gap 완벽 지원, 프로덕션 안정성 |
| 배포판 | 최소 RAM | 최소 CPU | 디스크 |
|---|---|---|---|
| k3s | ~512MB | 1 core | ~200MB |
| kind | ~1GB | 2 cores | ~1GB+ (이미지 포함) |
| k3d | ~512MB | 1 core | ~500MB (k3s 이미지) |
| Docker Desktop K8s | ~4GB (Docker 포함) | 2 cores | ~5GB+ |
| OrbStack | ~1GB (전체 앱) | 1 core | ~2GB |
| MicroK8s | ~1GB | 1 core | ~1GB |
※ 실제 사용량은 워크로드, 애드온 활성화 여부에 따라 크게 달라질 수 있습니다.
| 배포판 | 공식 문서 |
|---|---|
| k3s | https://docs.k3s.io |
| kind | https://kind.sigs.k8s.io |
| k3d | https://k3d.io |
| Docker Desktop K8s | https://docs.docker.com/desktop/kubernetes/ |
| OrbStack | https://docs.orbstack.dev/kubernetes/ |
| MicroK8s | https://microk8s.io/docs |