클라우드

[쿠버네티스] (3/3) minikube로 로컬 쿠버네티스 실습

제익 2026. 4. 17. 18:27
반응형

 

이전 글 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 등 심화 내용으로 이어가겠다.

 

반응형