### 1. 정의
Minikube는 로컬 컴퓨터(macOS, Linux, Windows)에서 단일 노드 Kubernetes 클러스터를 실행할 수 있게 해주는 도구.
쉽게 말해, 서버 수십 대가 필요한 쿠버네티스 환경을 내 컴퓨터 안에 가상으로 작게 구축해 주는 학습 및 테스트용 시뮬레이터.
### 2. 아키텍처 (작동 원리)
상용 쿠버네티스(Production)는 지휘관 역할의 Master Node와 실제 컨테이너가 뜨는 Worker Node가 물리적으로 여러 대의 서버에 나뉘어 있음.
Minikube는 이 모든 요소를 하나의 도커 컨테이너(또는 가상머신) 안에 통합함.
- 구조: ` Master Process + Worker Process ]` -> 하나의 Minikube 컨테이너
- 특징: 사용자는 kubectl 명령어를 통해 이 단일 컨테이너와 통신하며 마치 거대한 클러스터를 다루는 것처럼 연습 가능.
### 3. 왜 사용하는가? (목적)
- 비용 절감 AWS EKS나 Google GKE 같은 클라우드 쿠버네티스 서비스는 시간당 비용이 발생하나, Minikube는 로컬에서 실행되므로 무료.
- 안전한 학습 환경 (Sandbox) 설정을 잘못 건드려 클러스터가 고장 나더라도, 삭제하고 다시 만드는 데 부담이 없음. 초보자가 쿠버네티스 구조를 익히기에 최적.
- 개발 및 테스트 개발자가 작성한 애플리케이션(Spring Boot 등)을 실제 운영 환경에 배포하기 전에, 로컬에서 동일한 방식으로 배포 테스트 수행 가능.
### 4. 주요 명령어 (Workflow)
기본적인 사용 흐름.
1. 클러스터 실행 (출근) 쿠버네티스 환경을 생성하고 부팅. `minikube start`
2. 상태 확인 클러스터가 정상적으로 작동하는지 확인. `minikube status`
3. 대시보드 실행 (모니터링) 터미널 명령어가 익숙하지 않을 때 유용한 웹 GUI 제공. 현재 실행 중인 파드, 서비스 등을 눈으로 확인 가능. `minikube dashboard`
4. 로컬 도커 이미지 연결 (중요) Minikube는 자체적인 도커 저장소를 가짐. 내 컴퓨터에서 빌드한 이미지를 Minikube가 인식하게 하려면 아래 명령어로 터미널 환경 연결 필요. `eval $(minikube docker-env)`
5. 클러스터 중지 (퇴근) 데이터는 보존하되 실행만 중지. `minikube stop`
6. 클러스터 삭제 (초기화) 설정이 꼬였거나 처음부터 다시 시작하고 싶을 때 사용. 모든 데이터 삭제. `minikube delete`
### 5. Minikube 필수 명령어 정리
1. 생명주기 (Lifecycle)
서버를 켜고 끄는 관리 명령어.
- `minikube start` 클러스터 생성 및 실행. (출근)
- `minikube status` 현재 작동 상태 확인. (Running 여부 점검)
- `minikube stop` 클러스터 중지. 컨테이너와 설정 데이터는 유지됨. (퇴근)
- `minikube delete` 클러스터 삭제. 모든 데이터와 설정이 초기화됨. (공장 초기화)
2. 연결 및 접속 (Connectivity)
실행 중인 서비스에 접근하거나 확인하는 명령어.
- `minikube dashboard` 웹 GUI 대시보드 실행. 클러스터 상태를 시각적으로 확인.
- `minikube service [서비스이름]` NodePort로 노출된 서비스를 내 컴퓨터 브라우저에서 열 수 있도록 주소 연결. (예: `minikube service my-nginx`)
- `minikube service list` 현재 실행 중인 모든 서비스의 접속 URL 목록 확인.
- `minikube ip` Minikube 가상 머신(노드)의 내부 IP 주소 확인.
- `minikube ssh` Minikube 가상 머신 내부(리눅스 환경)로 접속.
3. 개발 환경 설정 (Development)
로컬 개발 시 유용한 명령어.
- `eval $(minikube docker-env)` 내 컴퓨터 터미널의 도커 환경을 Minikube 내부의 도커 데몬과 연결. (로컬에서 빌드한 이미지를 Minikube가 바로 쓸 수 있게 함)
- `minikube addons list` 사용 가능한 확장 기능(Ingress, Metrics Server 등) 목록 확인.
- `minikube addons enable [기능이름]` 특정 확장 기능 활성화. (예: `minikube addons enable ingress`)
### minikube를 이용해서 nginx 띄어보기
minikube start
k create deployment my-nginx --image=nginx
k expose deployment my-nginx --type=NodePort --port=80
minikube dashboard < GUI 로 확인 가능
minikube service my-nginx < 서비스 실행

### 그림 해설 (데이터 흐름 순서)
위 그림은 작성자가 입력한 명령어에 따라 트래픽이 어떻게 흐르는지를 보여줌.
1. 내 컴퓨터 (MacBook) 작성자가 있는 물리적인 공간. 터미널에서 명령을 내리고 브라우저로 결과를 확인하는 곳.
2. Minikube (가상 서버) `minikube start`로 생성된 거대한 가상 공간. 이 안에 쿠버네티스 시스템이 들어있음.
3. Deployment (관리자) `k create deployment` 명령어로 생성됨. 역할: "Nginx 컨테이너가 들어있는 파드(Pod)를 하나 만들어서 계속 유지해!"라고 관리함.
4. Pod & Container (실제 프로그램) Deployment에 의해 생성된 실제 일꾼. `Pod`: 껍데기(집). `Container`: 실제 Nginx 프로그램(방).
5. Service (문의 역할) `k expose ...` 명령어로 생성됨. 역할: 굳게 닫혀 있는 파드(Pod)에 외부에서 들어갈 수 있도록 대문을 만들어 줌.
6. Tunnel (연결 통로) `minikube service ...` 명령어로 생성됨. 역할: 맥북의 브라우저와 Minikube 내부의 Service 사이를 이어주는 임시 다리. (이게 없으면 맥에서 접속 불가)
'Infra' 카테고리의 다른 글
| terraform port 80 after 10 ms Couldn't connect to server (0) | 2025.12.17 |
|---|---|
| terraform apply 실행 시 No default VPC for this user 에러 (0) | 2025.12.16 |
댓글