Minikube 소개
Minikube 로컬 Kubernetes 랩 가이드입니다. 요구사항, Docker driver 시작, profile, 테스트 앱 배포, addon, 이미지 빌드, 로그와 정리 명령을 정리했습니다.
Minikube는 노트북이나 단일 서버에서 로컬 Kubernetes 클러스터를 빠르게 실행하기 위한 도구입니다. 운영용 HA 클러스터를 만드는 도구라기보다, Kubernetes 객체와 kubectl 흐름을 안전하게 실습하는 개발/학습용 랩에 가깝습니다.
공식 시작 문서 기준으로 최소 2 CPU, 2GB 메모리, 20GB 디스크 여유 공간, 인터넷 연결, 그리고 Docker/Podman/KVM/VirtualBox 같은 컨테이너 또는 VM 드라이버가 필요합니다.
설치 전 확인
uname -m
free -h
df -h
docker version 2>/dev/null || podman version 2>/dev/null
kubectl version --client
Linux에서는 Docker driver가 가장 단순한 편입니다. 서버 환경에서 bare-metal none driver를 바로 쓰기보다 Docker/KVM 기반으로 격리해서 시작하는 것이 관리하기 쉽습니다.
클러스터 시작
minikube start --driver=docker
minikube status
kubectl get nodes -o wide
kubectl get pods -A
여러 테스트 환경을 분리하려면 profile을 사용합니다.
minikube start -p dev --driver=docker
minikube profile dev
kubectl config get-contexts
테스트 애플리케이션 배포
kubectl create deployment hello-minikube --image=registry.k8s.io/echoserver:1.10
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get svc hello-minikube
minikube service hello-minikube --url
minikube service는 로컬 환경에서 Service URL을 열어 주는 편의 명령입니다. 실제 운영 클러스터에서는 Ingress, LoadBalancer, NodePort 정책을 별도로 설계합니다.
addon 사용
minikube addons list
minikube addons enable metrics-server
minikube addons enable ingress
kubectl get pods -n kube-system
kubectl top nodes
addon은 학습 속도를 올려 주지만, 운영 배포와 동일하다고 보면 안 됩니다. 운영에서는 Ingress Controller, metrics stack, storage class를 별도 기준으로 선택합니다.
이미지 빌드 실습
eval $(minikube docker-env)
docker build -t sample-web:dev .
kubectl create deployment sample-web --image=sample-web:dev --dry-run=client -o yaml > deployment.yaml
kubectl apply -f deployment.yaml
이 방식은 Minikube 내부 Docker daemon에 이미지를 빌드합니다. 다른 터미널로 돌아가면 환경 변수가 남아 있을 수 있으므로 실습 후 해제합니다.
eval $(minikube docker-env -u)
장애 확인
minikube logs
kubectl describe node minikube
kubectl get events -A --sort-by=.lastTimestamp
kubectl describe pod -n kube-system
이미지 pull 실패, 디스크 부족, Docker 권한 문제, CNI 초기화 실패가 로컬 Minikube에서 자주 만나는 문제입니다. 먼저 minikube status와 minikube logs를 확인합니다.
정리
kubectl delete deployment hello-minikube
kubectl delete svc hello-minikube
minikube stop
minikube delete
minikube delete -p dev
Minikube로 배우기 좋은 것
- kubectl 기본 명령
- Deployment, Service, ConfigMap, Secret, Ingress 흐름
- Kustomize나 Helm으로 manifest 적용하기
- Pod 로그와 이벤트 기반 장애 분석