
이전 글 1 : 2025.10.14 - [클라우드] - [쿠버네티스] (1/3) Cloud Native와 Kubernetes란?
이전 글 2 : 2026.04.15 - [클라우드] - [쿠버네티스] (2/3) 쿠버네티스 주요 오브젝트 정리
이전 글에서는 Pod, Deployment, Service 등 쿠버네티스의 주요 오브젝트들을 정리했다.
이번 글에서는 로컬 환경에서 쿠버네티스를 직접 실습할 수 있는 minikube를 설치하고, 실제로 애플리케이션을 배포해보도록 하겠다.
1. minikube란?
minikube는 로컬 환경(개인 PC)에서 쿠버네티스 클러스터를 간편하게 실행할 수 있게 해주는 도구다. 실제 운영 환경의 멀티 노드 클러스터와 달리, 단일 노드 클러스터를 로컬에 구성하여 쿠버네티스를 학습하고 테스트하는 용도로 널리 사용된다.
- minikube의 특징
- Windows, macOS, Linux 모두 지원
- Docker, VirtualBox 등 다양한 드라이버 위에서 동작
- kubectl과 함께 사용하여 실제 쿠버네티스와 동일한 방식으로 실습 가능
- 대시보드, Ingress 등 다양한 애드온 지원
2. 사전 준비
minikube를 사용하려면 아래 두 가지가 먼저 설치되어 있어야 한다.
1) Docker 설치
minikube는 기본적으로 Docker 드라이버를 사용한다. Docker Desktop이 설치되어 있으면 된다.
설치 링크 : https://www.docker.com/products/docker-desktop/
2) kubectl 설치
kubectl은 쿠버네티스 클러스터를 제어하는 CLI 도구다. 아래 명령어로 설치할 수 있다.
# macOS (Homebrew)
brew install kubectl
# Windows (Chocolatey)
choco install kubernetes-cli
# 버전 확인
kubectl version --client
3. minikube 설치 및 시작
1) minikube 설치
# macOS (Homebrew)
brew install minikube
# Windows (Chocolatey)
choco install minikube
# 버전 확인
minikube version
2) 클러스터 시작
# Docker 드라이버로 클러스터 시작
minikube start --driver=docker
# 클러스터 상태 확인
minikube status
정상적으로 시작되면 아래와 같이 출력된다.
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
3) 노드 확인
# 클러스터 노드 목록 확인
kubectl get nodes
# 출력 예시
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.31.0
4. 애플리케이션 배포 실습
이제 직접 nginx 웹 서버를 배포해보겠다. 2편에서 정리한 Deployment와 Service를 직접 적용해보는 과정이다.
1) Deployment 생성
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
# Deployment 적용
kubectl apply -f nginx-deployment.yaml
# Pod 생성 확인
kubectl get pods
잠시 후 아래처럼 Pod 2개가 Running 상태가 되면 정상이다.
NAME READY STATUS RESTARTS AGE
nginx-deployment-7d6b84b6c9-4xkzp 1/1 Running 0 30s
nginx-deployment-7d6b84b6c9-9wtrn 1/1 Running 0 30s
2) Service 생성 (NodePort)
로컬에서 브라우저로 접근하려면 NodePort 타입 Service가 필요하다.
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080 # 외부에서 접근할 포트 (30000~32767)
type: NodePort
# Service 적용
kubectl apply -f nginx-service.yaml
# Service 확인
kubectl get services
3) 브라우저에서 확인
minikube에서는 아래 명령어로 브라우저를 바로 열 수 있다.
# 브라우저로 서비스 열기
minikube service nginx-service
# 또는 URL만 출력
minikube service nginx-service --url
출력된 URL로 접속하면 nginx 기본 페이지가 표시된다.
5. 자주 쓰는 kubectl 명령어 정리
실습하면서 자주 사용하게 되는 명령어들을 정리했다.
| 명령어 | 설명 |
|---|---|
kubectl get pods |
Pod 목록 조회 |
kubectl get services |
Service 목록 조회 |
kubectl get deployments |
Deployment 목록 조회 |
kubectl describe pod [이름] |
Pod 상세 정보 확인 |
kubectl logs [Pod 이름] |
Pod 로그 확인 |
kubectl apply -f [파일명] |
YAML 파일로 리소스 생성/수정 |
kubectl delete -f [파일명] |
YAML 파일로 리소스 삭제 |
kubectl scale deployment [이름] --replicas=[수] |
Pod 개수 조정 |
- 스케일 아웃 예시
# Pod 개수를 2개 → 4개로 늘리기
kubectl scale deployment nginx-deployment --replicas=4
# 결과 확인
kubectl get pods
6. 클러스터 정리
실습이 끝나면 리소스를 삭제하고 minikube를 종료한다.
# 배포한 리소스 삭제
kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml
# minikube 클러스터 중지
minikube stop
# 클러스터 완전 삭제 (필요 시)
minikube delete
📌 이번 글 정리
- minikube로 로컬에서 단일 노드 쿠버네티스 클러스터를 구성할 수 있다.
kubectl apply -f로 YAML 파일을 적용해 Deployment, Service를 생성한다.- NodePort 타입 Service를 사용하면 로컬 브라우저에서 배포된 애플리케이션에 접근할 수 있다.
kubectl scale로 Pod 개수를 손쉽게 조정할 수 있다.- 실습이 끝나면
minikube stop으로 클러스터를 중지한다.
3편에 걸쳐 Cloud Native 개념부터 쿠버네티스 아키텍처, 주요 오브젝트, 실습까지 정리했다. 다음에는 Ingress, PersistentVolume 등 심화 내용으로 이어가겠다.
'클라우드' 카테고리의 다른 글
| [쿠버네티스] (2/3) 쿠버네티스 주요 오브젝트 정리 (2) | 2026.04.15 |
|---|---|
| [쿠버네티스] (1/3) Cloud Native와 Kubernetes란? (0) | 2025.10.14 |
| [Docker] Docker 2. 이미지 생성 (2) | 2025.04.08 |
| [Docker] Docker 1. 개념과 용어 (0) | 2025.03.04 |