쿠버네티스 첫걸음 2편 — 맥·윈도우에 라이선스 걱정 없이 로컬 클러스터 만들기: Rancher Desktop·OrbStack·Docker Desktop·kind·minikube·k3d 비교
쿠버네티스 자체는 Apache 2.0 오픈소스라 누구나 무료입니다. 라이선스가 걸리는 것은 그걸 노트북에 띄워 주는 데스크톱 앱 쪽뿐입니다. 로컬 클러스터 도구 여섯 가지(Rancher Desktop·OrbStack·Docker Desktop·kind·minikube·k3d)를 라이선스·가벼움·노드 개수·로컬 이미지 사용법으로 비교하고, 조건을 고르면 추천 도구가 나오는 위젯을 제공합니다. kubectl 설치부터 맥·윈도우 각각 클러스터를 만들고 kubectl get nodes로 확인하기까지 복사해서 쓰는 명령으로 안내하며, kubeconfig와 context가 무엇인지, 여러 클러스터를 오갈 때 무엇을 조심할지도 정리합니다. 여러 도구 속에 숨어 있는 k3s를 따로 떼어, 무엇이 기본 포함인지와 k3d·RKE2와의 차이, 리눅스 서버에 명령 한 줄로 팀 공용 클러스터를 만들고 워커를 붙이고 Traefik으로 도메인을 여는 법까지 실습합니다.
쿠버네티스를 배우려는 분이 가장 먼저 부딪히는 벽은 "연습할 클러스터가 없다"는 것입니다. 회사 클러스터에서 연습하자니 무언가를 망가뜨릴까 겁나고, 클라우드에 EKS를 만들자니 시간당 요금이 나갑니다. 그리고 도커 첫걸음 2편에서 봤던 라이선스 질문이 다시 나옵니다. "Docker Desktop에 쿠버네티스 켜기 버튼이 있던데, 그거 회사에서 써도 되나요?"
답은 간단합니다. 노트북 안에 작은 클러스터를 만들면 됩니다. 무료이고, 몇 분이면 되고, 망가뜨려도 지우고 다시 만들면 그만입니다.
✅
결론 먼저.
· 쿠버네티스와 kubectl은 Apache 2.0 오픈소스라 누구나 무료입니다. 라이선스가 걸리는 것은 데스크톱 앱(Docker Desktop, OrbStack 업무용)뿐입니다.
· 회사 + 무료 + 화면 있는 도구 → Rancher Desktop (맥·윈도우 모두, 체크 하나로 k3s 클러스터)
· 개인 맥 → OrbStack의 내장 쿠버네티스가 가장 가볍습니다.
· 여러 노드 실험·CI → kind 또는 k3d (도커 위에서 몇 초 만에 만들고 지움)
· 팀 공용 클러스터 → 리눅스 서버에 k3s를 명령 한 줄로 (9장)
· 어떤 도구를 골라도 kubectl 명령과 YAML은 똑같습니다.
k3s는 가짜 쿠버네티스가 아닙니다. SUSE(Rancher)가 만든 k3s는 불필요한 부분을 덜어 내고 파일 하나로 묶은 CNCF 인증 쿠버네티스 배포판입니다. 적은 메모리로도 돌아서 노트북·IoT·엣지 서버에 많이 쓰입니다. API가 표준 쿠버네티스와 같으므로 여기서 익힌 YAML이 EKS·GKE에서도 그대로 동작합니다. 무엇이 들어 있고 서버에 직접 설치하면 어떻게 쓰는지는 아래 9장에서 자세히 다룹니다.
2. 도구 한눈에 비교 (2026년 9월 기준)
도구
OS
라이선스 · 가격
노드
한 줄 평
Rancher Desktop
맥·윈도우·리눅스
Apache 2.0 — 완전 무료
1
도커 + 쿠버네티스를 한 앱에서. 버전 선택 가능. 회사 무료 GUI의 기본값
OrbStack
맥 전용
개인 무료 / 업무용 Pro $8·인/월
1
가장 가볍고 빠름. 로컬에서 빌드한 이미지를 바로 파드에 사용
Docker Desktop
맥·윈도우·리눅스
Docker Desktop 라이선스를 따름 (250명·$10M)
1 (kubeadm) / 여러 개 (kind)
이미 합법적으로 쓰고 있다면 클릭 몇 번
kind
맥·윈도우·리눅스
Apache 2.0 — 무료
여러 개
쿠버네티스 공식 SIG 도구. 수십 초 만에 생성·삭제. CI 표준
minikube
맥·윈도우·리눅스
Apache 2.0 — 무료
여러 개
가장 오래된 학습용 도구. addons(대시보드·인그레스 등)가 풍부
k3d
맥·윈도우·리눅스
MIT — 무료
여러 개
k3s를 도커 위에. 멀티 노드와 로컬 레지스트리를 한 줄로
Colima (--kubernetes)
맥·리눅스
MIT — 무료
1
Colima로 도커를 쓰고 있다면 옵션 하나로 k3s 추가
아래 위젯에서 운영체제, 사용처, 이미 쓰는 도커 도구, 목적을 고르면 추천 순서와 시작 명령, kubectl에서 보일 context 이름이 나옵니다.
⚠️
메모리를 넉넉히. 쿠버네티스는 도커만 쓸 때보다 기본 메모리를 더 씁니다. 도구 설정에서 VM에 최소 4GB, 여유 있으면 6~8GB를 주세요. 파드가 Pending에서 안 넘어가는 이유의 상당수가 메모리 부족입니다(3편 진단기 참고).
3. 공통 준비 — kubectl 설치
kubectl(큐브컨트롤, 큐브씨티엘 등으로 읽음)은 쿠버네티스에 명령을 보내는 공식 CLI입니다. 어떤 도구로 클러스터를 만들든 kubectl로 조작합니다. Rancher Desktop·Docker Desktop·OrbStack은 kubectl을 함께 설치해 주지만, 따로 설치해 두면 버전 관리가 편합니다.
맥
bash
brew install kubectl
윈도우 (PowerShell)
powershell
winget install -e --id Kubernetes.kubectl
설치를 확인합니다.
bash
kubectl version --client
ℹ️
버전 짝 맞추기. kubectl은 클러스터 버전과 위아래 한 단계(마이너 버전)까지 호환됩니다. 2026년 9월 현재 지원 중인 쿠버네티스는 1.37·1.36·1.35이므로, 최신 kubectl이면 로컬 도구가 만드는 클러스터와 대부분 맞습니다. 회사 클러스터가 오래된 버전이라면 그에 맞는 kubectl을 쓰세요.
4. 맥에서 클러스터 만들기
4-1. Rancher Desktop (회사 무료 · GUI)
도커 2편에서 Rancher Desktop을 설치했다면 이미 절반은 끝났습니다. 아직이라면:
bash
brew install --cask rancher
앱을 열고 Preferences → Kubernetes에서:
Enable Kubernetes
체크한다. 처음 켜면 k3s를 내려받느라 몇 분 걸린다.
Kubernetes version
회사 클러스터와 같은 마이너 버전을 고르면 좋다. 모르면 기본값(stable).
Container Engine
도커 2편처럼 dockerd (moby). 이러면 docker build로 만든 이미지를 쿠버네티스가 바로 쓸 수 있다(4편).
4-2. OrbStack (개인 맥 · 가장 가벼움)
bash
brew install --cask orbstack
orb start k8s
OrbStack 앱의 Kubernetes 탭에서 켜도 됩니다. OrbStack은 서비스에 *.k8s.orb.local 도메인을 자동으로 붙여 주고, 로컬에서 빌드한 이미지를 레지스트리 없이 바로 파드에서 쓸 수 있습니다. 다만 업무용은 유료라는 점(도커 2편)을 기억하세요.
4-3. kind (무료 · 여러 노드 · 도커 필요)
kind는 도커 엔진이 있어야 합니다. OrbStack·Rancher Desktop·Colima 무엇이든 도커가 돌고 있으면 됩니다.
bash
brew install kind
kind create cluster --name dev
노드를 여러 개 만들어 보고 싶다면 설정 파일을 씁니다. 아래 내용을 kind-multi.yaml로 저장하세요.
kubectl config current-context
kubectl get nodes
kubectl get pods -A
get nodes에 노드가 Ready로 보이면 성공입니다.
text
NAME STATUS ROLES AGE VERSION
lima-rancher-desktop Ready control-plane,master 2m v1.36.4+k3s1
get pods -A(모든 네임스페이스)에는 kube-system 네임스페이스에 coredns 같은 시스템 파드들이 Running으로 보입니다. 쿠버네티스가 스스로를 돌리려고 띄운 파드들입니다. 건드리지 마세요.
🔧
The connection to the server localhost:8080 was refused — kubectl이 어느 클러스터에도 연결되지 않았다는 뜻입니다. 도구가 켜져 있는지 확인하고, 아래 7장의 kubectl config get-contexts로 연결 대상이 있는지 보세요. Unable to connect to the server는 연결 대상은 있는데 그 클러스터가 꺼져 있을 때 납니다.
7. kubeconfig와 context — kubectl은 어디에 연결되나
kubectl은 kubeconfig라는 설정 파일을 읽어 어느 클러스터에, 누구로, 어느 네임스페이스에 명령을 보낼지 정합니다. 기본 위치는 ~/.kube/config(윈도우는 %USERPROFILE%\.kube\config)입니다. 로컬 도구들은 클러스터를 만들 때 이 파일에 자기 항목을 자동으로 추가합니다.
kubeconfig 안의 칸
뜻
clusters
클러스터 주소와 인증서
users
누구로 접속하나 (인증 정보)
contexts
"클러스터 + 사용자 + 기본 네임스페이스" 한 묶음에 붙인 이름
current-context
지금 kubectl이 쓰는 context
도구를 여러 개 써 봤다면 context도 여러 개입니다.
bash
kubectl config get-contexts
text
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
kind-dev kind-dev kind-dev
* orbstack orbstack orbstack
rancher-desktop rancher-desktop rancher-desktop
별표가 현재 context입니다. 바꾸려면:
bash
kubectl config use-context kind-dev
🚨
가장 위험한 실수: 운영 클러스터에서 실습 명령을 치는 것. 나중에 회사 클러스터의 kubeconfig를 받으면 같은 파일에 context가 추가됩니다. kubectl delete를 치기 전에 항상 현재 context를 확인하는 습관을 들이세요. 5편에서 프롬프트에 현재 context를 늘 보이게 하는 도구(kube-ps1, k9s)를, 6편에서 팀 규칙을 다룹니다.
🔒
kubeconfig는 열쇠입니다. 이 파일에는 클러스터에 접속할 인증서나 토큰이 들어 있습니다. 채팅방에 붙여 넣거나 Git에 커밋하지 마세요. 로컬 클러스터의 것은 괜찮지만, 회사 클러스터의 것은 비밀번호와 같습니다.
8. 첫 파드 한 번 띄워 보기
3편에서 자세히 하겠지만, 클러스터가 제대로 도는지 맛만 봅시다.
bash
kubectl run hello --image=nginx:1.29
kubectl get pods
hello 파드가 ContainerCreating을 거쳐 Running이 되면 성공입니다. 브라우저로 확인해 봅니다.
bash
kubectl port-forward pod/hello 8080:80
http://localhost:8080에 nginx 환영 페이지가 보입니다. Ctrl+C로 port-forward를 끝내고 파드를 지웁니다.
bash
kubectl delete pod hello
9. 한 걸음 더 — k3s 제대로 알기
지금까지 k3s는 Rancher Desktop·OrbStack·Colima·k3d 안에 숨어 있는 엔진으로만 나왔습니다. 그런데 k3s는 그 자체로 가장 널리 쓰이는 쿠버네티스 배포판 중 하나이고, 특히 팀이 함께 쓰는 작은 클러스터를 만들 때 가장 손쉬운 선택입니다. 노트북 밖으로 한 걸음 나가 봅시다.
9-1. k3s는 무엇을 덜고, 무엇을 더했나
k3s는 SUSE(Rancher)가 만든 Apache 2.0 오픈소스이고, CNCF(클라우드 네이티브 컴퓨팅 재단) 샌드박스 프로젝트이자 CNCF 적합성 인증을 받은 배포판입니다. 쿠버네티스 API는 그대로 두고, 설치와 운영을 무겁게 만드는 부분을 바꿨습니다.
비교
표준 방식 (kubeadm 등)
k3s
설치
여러 구성 요소를 따로 설치·연결
명령 한 줄. 모든 것이 실행 파일 하나에
최소 사양
컨트롤 플레인에 보통 2코어·2GB 이상 + 부가 요소 별도
서버 2코어·2GB, 에이전트(워커) 1코어·512MB
상태 저장소
etcd (따로 운영)
기본 SQLite(파일 하나). 필요하면 내장 etcd·MySQL·PostgreSQL
네트워크·DNS·저장소·인그레스
직접 골라서 설치
기본으로 들어 있음 (아래 표)
CPU
주로 x86-64
x86-64, arm64, armhf — 라즈베리 파이에서도
쿠버네티스 API·kubectl·YAML
표준
똑같다 — 이 시리즈의 모든 내용이 그대로 통한다
k3s에 기본으로 들어 있는 것 — 3·4편에서 "k3s 계열은 된다"고 했던 이유가 여기 있습니다.
구성 요소
역할
이 시리즈에서 만난 곳
containerd
컨테이너 런타임
1편 — 쿠버네티스는 도커 엔진 대신 containerd로 돌린다
Flannel · CoreDNS
파드 간 네트워크 · 서비스 이름 DNS
4편 — http://hello-api로 부르기
Traefik
Ingress 컨트롤러 (도메인으로 공개)
4편 — Ingress. 아래 9-3에서 실습
ServiceLB
LoadBalancer 서비스를 노드 IP로 열어 줌
4편 — Rancher Desktop·OrbStack에서 LoadBalancer가 localhost로 되던 이유
local-path-provisioner
PVC를 노드의 폴더로 만들어 줌
6편 대응표 — PersistentVolumeClaim
metrics-server
CPU·메모리 사용량
3편 — kubectl top
Kube-router (네트워크 정책)
NetworkPolicy 적용
—
이름이 비슷한 친척들 — 헷갈리기 쉬우니 한 번에 정리합니다.
이름
정체
언제
k3s
가벼운 쿠버네티스 배포판 자체
리눅스 서버·VM·엣지 장비에 직접 설치
k3d
k3s를 도커 컨테이너 안에서 돌리는 도구
노트북에서 몇 초 만에 만들고 지우는 실습·CI (2장)
Rancher Desktop · OrbStack · Colima
노트북 VM 안에 k3s를 띄워 주는 데스크톱 도구
개인 개발 (4·5장)
RKE2
같은 회사의 보안 강화형 배포판 (CIS 기준 강화, FIPS 지원 등)
공공기관·금융처럼 보안 인증 요구가 큰 운영 환경
Rancher (Rancher Desktop 아님)
여러 클러스터를 한곳에서 관리하는 서버용 관리 플랫폼
클러스터가 여러 개가 된 뒤
9-2. 리눅스 서버에 k3s 설치하기 — 팀 공용 클러스터
사내에 남는 리눅스 서버, 클라우드 VM 한 대, 또는 맥이라면 OrbStack의 리눅스 머신(orb create ubuntu k3s-lab)이 있으면 됩니다. 필요한 것은 서버 2코어·2GB 이상, 그리고 노드끼리 통신할 포트(TCP 6443 API 서버, UDP 8472 네트워크, TCP 10250 kubelet)가 열려 있는 것입니다.
이 kubeconfig는 클러스터 전체 관리자(cluster-admin) 열쇠입니다. 서버 관리자 한두 명만 가지고, 팀원에게 복사해 주지 마세요. 팀원에게는 6편의 RBAC로 네임스페이스별 edit·view 권한을 따로 줍니다. 그리고 6443 포트는 사내망에서만 열고 인터넷에 노출하지 마세요.
9-3. 기본 포함된 Traefik으로 도메인 공개해 보기
4편의 hello-api 디플로이먼트와 서비스를 이 클러스터에 올렸다면(이미지는 레지스트리에서 받도록 ghcr.io/... 이름으로), Ingress 하나로 브라우저에서 도메인으로 접속할 수 있습니다. DNS가 없어도 되도록 IP를 이름에 넣으면 그 IP로 풀어 주는 무료 서비스 nip.io를 씁니다.
kubectl apply -f ingress.yaml 후 http://hello.서버IP.nip.io를 열면 hello-api가 응답합니다. port-forward 없이, 팀원 누구나 사내망에서 같은 주소로 접속할 수 있습니다. 호스트 이름은 hello.192.168.0.10.nip.io처럼 서버 IP를 그대로 넣습니다.
9-4. 쓰기 전에 알아 둘 점과 정리
서버 1대의 한계
기본 구성(서버 1대 + SQLite)에서는 그 서버가 꺼지면 컨트롤 플레인이 멈춘다. 이미 떠 있는 파드는 계속 돌지만 배포·복구가 안 된다. 개발·테스트 공용으로는 충분하다.
고가용성(HA)
운영에 쓰려면 서버 3대 이상에 내장 etcd로 구성한다(첫 서버에 --cluster-init). 저장소 백업과 업그레이드 절차도 함께 정해야 한다.
빼고 싶은 기본 구성
다른 Ingress를 쓰려면 설치 때 Traefik을 끌 수 있다: curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -
깨끗이 지우기
서버는 /usr/local/bin/k3s-uninstall.sh, 워커는 /usr/local/bin/k3s-agent-uninstall.sh. 설치 때 함께 들어온다.
💡
팀 공용 클러스터, 어디까지 k3s로? 개발·테스트용 공용 클러스터, 사내 도구, 공장·매장·키오스크 같은 엣지 장비, 인터넷이 막힌 폐쇄망에는 k3s가 가볍고 좋은 선택입니다. 서비스가 커져 운영 부담을 줄이고 싶어지면 관리형 쿠버네티스(EKS·GKE·AKS)로 옮기면 됩니다. 쿠버네티스 API가 같으니 6편에서 만든 매니페스트와 Kustomize 폴더는 그대로 가져갈 수 있습니다.
10. 팀 추천 조합
상황
맥
윈도우
개인·공부
OrbStack
Rancher Desktop
회사, 비용 없이, 화면 있는 도구
Rancher Desktop
Rancher Desktop
여러 노드 실험·CI 파이프라인
kind 또는 k3d
kind (WSL2 안)
팀이 함께 쓰는 개발·테스트 클러스터
사내 리눅스 서버나 VM에 k3s (9장)
Docker Desktop 라이선스를 이미 보유
Docker Desktop (kind 방식)
Docker Desktop (kind 방식)
마치며
🧠
2편 요약
· 쿠버네티스·kubectl은 무료. 라이선스는 데스크톱 앱만 따진다
· 회사 무료 GUI → Rancher Desktop(Enable Kubernetes, dockerd), 개인 맥 → OrbStack, 여러 노드·CI → kind·k3d
· VM에 메모리 4GB 이상
· k3s = 명령 한 줄로 설치되는 CNCF 인증 경량 쿠버네티스. Traefik·ServiceLB·local-path가 기본 포함, 팀 공용 클러스터에 적합
· 확인은 kubectl config current-context → kubectl get nodes → kubectl get pods -A
· kubeconfig = 열쇠, context = 지금 연결된 클러스터. delete 전에 context 확인
다음 편에서는 kubectl을 제대로 익힙니다. 명령의 문법, 노드와 파드를 들여다보는 법, 파드가 안 뜰 때 원인을 찾는 순서를 실습합니다.