대상 독자: 로컬에서 Kubernetes를 실습하고 싶은 개발자 선수 지식: Docker 기본 이 문서를 읽으면: Minikube 또는 Kind로 로컬 Kubernetes 환경을 구성할 수 있습니다

TL;DR
  • Minikube: 단일 노드, 초보자에게 권장, 다양한 애드온 지원
  • Kind: 다중 노드 가능, CI/CD에 적합, 빠른 클러스터 생성
  • Docker Desktop: macOS/Windows에서 가장 간단한 설정

로컬 Kubernetes 옵션 비교#

도구장점단점적합한 경우
Minikube애드온 풍부, 문서 많음단일 노드만학습, 개발
Kind빠름, 다중 노드, CI 친화애드온 적음CI/CD, 테스트
Docker Desktop설치 쉬움리소스 많이 사용빠른 시작
k3d경량, 빠름프로덕션과 차이빠른 테스트

Minikube 설치#

설치#

# Homebrew로 설치
brew install minikube

# 버전 확인
minikube version
# 바이너리 다운로드
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# 설치
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 버전 확인
minikube version
# Chocolatey로 설치
choco install minikube

# 또는 수동 설치
# https://minikube.sigs.k8s.io/docs/start/

클러스터 시작#

# 기본 설정으로 시작
minikube start

# 리소스 지정
minikube start --cpus=4 --memory=8192

# 특정 Kubernetes 버전 사용
minikube start --kubernetes-version=v1.29.0

# 드라이버 지정
minikube start --driver=docker

사용 가능한 드라이버는 다음과 같습니다.

드라이버플랫폼특징
docker모두권장, 가장 안정적
virtualbox모두완전한 VM, 느림
hyperkitmacOS가벼움
hypervWindowsWindows 내장

상태 확인#

# 클러스터 상태
minikube status

# Kubernetes 버전
kubectl version

# 노드 정보
kubectl get nodes

유용한 애드온#

# 애드온 목록
minikube addons list

# 주요 애드온 활성화
minikube addons enable metrics-server  # HPA 사용 시 필수
minikube addons enable ingress         # Ingress 테스트
minikube addons enable dashboard       # 웹 UI

Dashboard 접근#

# Dashboard 열기
minikube dashboard

클러스터 관리#

# 일시 중지
minikube pause

# 재개
minikube unpause

# 중지 (리소스 유지)
minikube stop

# 삭제 (모든 데이터 삭제)
minikube delete

Kind 설치#

Kind(Kubernetes IN Docker)는 Docker 컨테이너를 노드로 사용하는 도구입니다.

설치#

brew install kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
choco install kind

클러스터 생성#

# 기본 클러스터 (단일 노드)
kind create cluster

# 이름 지정
kind create cluster --name my-cluster

# 다중 노드 클러스터
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
EOF

다중 노드 설정 파일#

# kind-config.yaml
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
  - containerPort: 443
    hostPort: 443
- role: worker
- role: worker
kind create cluster --config=kind-config.yaml

클러스터 관리#

# 클러스터 목록
kind get clusters

# 클러스터 삭제
kind delete cluster --name my-cluster

# 이미지 로드 (로컬 이미지를 클러스터에 로드)
kind load docker-image my-app:1.0 --name my-cluster

kubectl 설치#

kubectl은 Kubernetes 클러스터와 통신하는 CLI 도구입니다.

brew install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install kubectl /usr/local/bin/kubectl
choco install kubernetes-cli

kubectl 자동 완성 설정#

# bash-completion 설치
# macOS
brew install bash-completion

# .bashrc에 추가
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
# .zshrc에 추가
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
echo 'alias k=kubectl' >> ~/.zshrc
source ~/.zshrc

유용한 kubectl 별칭#

# ~/.bashrc 또는 ~/.zshrc에 추가
alias k='kubectl'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias kx='kubectl exec -it'
alias ka='kubectl apply -f'
alias kdel='kubectl delete'

설치 확인#

환경이 제대로 설정되었는지 확인합니다.

# 클러스터 정보
kubectl cluster-info

# 노드 목록
kubectl get nodes

# 시스템 Pod 확인
kubectl get pods -n kube-system

# 테스트 Pod 실행
kubectl run test --image=nginx --rm -it --restart=Never -- curl localhost

예상 출력:

Kubernetes control plane is running at https://127.0.0.1:xxxxx
CoreDNS is running at https://127.0.0.1:xxxxx/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

다음 단계#

환경 설정이 완료되었다면 다음 단계로 진행하세요:

목표추천 문서
Kubernetes 시작하기Quick Start
기본 리소스 실습기본 예제
실제 앱 배포Spring Boot 배포