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 statusminikube 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 로그와 이벤트 기반 장애 분석

공식 문서

BGM EVER