Minikube

2026. 6. 13. 10:00Kubernetes


Ⅰ. Minikube 설치

Minikube

설치
구분 설명
개념 Minikube는 로컬 환경 (개인 PC, 가상머신 등)에 Kubernetes 단일 노드 클러스터 설치
master와 node 기능을 동시에 구현할 수 있는 경량 테스트용 Kubernetes 배포 도구
구성 하나의 노드에 Control Plane (Master)과 Worker (Node) 기능 함께 포함
Docker, containerd, Podman 등 다양한 컨테이너 런타임 지원
특징 로컬에서 Kubernetes 클러스터 쉽게 구성 및 테스트 가능
kubectl과 완전 호환되어 실제 운영 클러스터와 동일한 명령어 사용
다양한 드라이버 (VM, Docker, Hyper - V 등)를 통해 실행 환경 선택 가능
학습, 테스트, 개발 환경 구축에 적합
역할 / 활용 Kubernetes의 구성 요소 동작 테스트 및 실습용 환경 구축
애플리케이션 배포, 서비스 노출, 리소스 관리 실습 가능
운영 환경 배포 전 YAML 설정 검증 및 트러블슈팅 테스트 가능
기본 명령어 명령어 설명
minikube start 클러스터 시작 (자동으로 control plane과 node 생성)
minikube status 클러스터 상태 확인
minikube stop 클러스터 중지
minikube delete 클러스터 삭제
minikube dashboard 웹 UI 대시보드 실행

 

 

 

minikube start 명령을 통해 Minikube 클러스터 시작

 

kubectl get nodes 명령을 통해 클러스터 내 노드 목록과 상태 확인

 

kubectl get nodes -o wide 명령을 통해 클러스터 내 노드의 상세 정보 (IP, OS, Kernel 등) 확인

 


Ⅰ - Ⅰ. Pod (파드)

Pod (파드) 구분 내용

개념 Kubernetes에서 가장 작은 배포 단위 (Unit of Deployment)로,

하나 이상의 컨테이너를 하나의 논리적 그룹으로 묶은 단위
구성 같은 작업을 수행하는 하나 이상의 컨테이너, 스토리지 볼륨, 네트워크 네임스페이스 포함
특징 여러 컨테이너가 존재할 수 있지만, 일반적으로 하나의 애플리케이션 컨테이너만 포함
동일한 Pod 내 컨테이너들은 네트워크 (IP, 포트)와 저장공간 (Volume) 공유
Pod는 노드에 스케줄되어 실행되고, 상태에 따라 재시작 또는 교체 가능
역할 애플리케이션 실행의 기본 단위
Kubernetes가 관리하는 모든 컨테이너는 Pod 형태로 존재
Deployment, ReplicaSet, StatefulSet 등이 여러 Pod를 관리하여 서비스 가용성 유지
상태 관리 일시적 (Ephemeral) 객체로, 직접 유지되지 않고,

상위 컨트롤러 (ReplicaSet, Deployment)에 의해 관리
삭제되거나 장애가 발생할 경우, 자동으로 새 Pod로 대체
예시 명령어 예시 설명
ex) kubectl get pods 실행 중인 모든 파드 확인
ex) kubectl describe pod [이름]  파드의 상세 정보 확인

 

 

kubectl get pod -A 명령을 통해 모든 네임스페이스의 Pod 확인

 


Ⅰ - Ⅱ. Namespace (네임스페이스)

Namespace

(네임스페이스)
구분 설명
개념 Kubernetes 클러스터 내 리소스 (Pod, Service, ConfigMap 등)를

논리적으로 구분하기 위한 가상 공간
리소스의 이름 충돌 방지
프로젝트, 팀, 환경별로 자원 분리 관리
특징 리소스 격리 단위로, 동일한 클러스터 내에서도 네임스페이스별로 독립적인 환경 구성 가능
서로 다른 Namespace에 동일한 이름의 리소스가 존재해도 충돌 없음
일부 리소스 (Node, PersistentVolume 등)는

클러스터 전체 (global scope) 리소스로 Namespace에 속하지 않음
기본 

Namespace
Namespace 설명
default 기본 리소스가 배치되는 공간
kube-system Kubernetes 시스템 리소스가 위치
kube-public 모든 사용자가 접근 가능한 공개 리소스 
kube-node-lease 노드 상태 (HeartBeat) 관련 리소스 저장
역할 리소스 관리와 접근 권한을 분리하여 보안성과 운영 효율성 향상
프로젝트별, 환경별 (dev, test, prod 등)로 자원 할당, 정책 (ResourceQuota, LimitRange) 적용 가능
추가 관리 

리소스
리소스 설명
ResourceQuota 네임스페이스 내 리소스 사용량 확인
LimitRange Pod / Container 단위 자원 사용 기본값 및 최대값 설정
예시 명령어 예시 명령어 설명
ex) kubectl get ns 네임스페이스 목록 확인
ex) kubectl create ns dev dev 네임스페이스 생성
ex) kubectl get pods -n kube-system 특정 네임스페이스의 파드 조회

 

 

kubectl get namespaces 명령을 통해 네임스페이스 목록 확인

 


Ⅰ - Ⅲ. Service (서비스)

Service

(서비스)
구분 설명
개념 Kubernetes 클러스터 내부 및 외부 간 네트워크 접근을 안정적으로 제공하기 위한 추상화 리소스
Pod의 IP는 동적으로 바뀌기 때문에 Service를 이용해 고정된 접근 Endpoint 제공
Pod 재시작 및 교체 시에도 Service는 동일한 IP (ClusterIP) 유지
특징 Kubernetes 기본 네트워크 추상화 계층
Pod들의 집합을 Selector (Label)을 묶어 하나의 Endpoint로 제공
로드밸런싱 (라운드로빈 등) 기능 내장
Cluster 내부 및 외부 구간에 따라 다양한 Service 타입 제공
kube-proxy가 iptables / IPVS 기반으로 Service 트래픽 전달 관리
타입 타입 설명
ClusterIP (기본값) 클러스터 내부에서만 접근 가능한 가상 IP 생성
외부에서 직접 접근 불가
내부 Pod 간 통신에 가장 많이 사용
NodePort 각 노드의 정해진 PortRange (30000 ~ 32767) 

오픈하여 외부에서 접근 가능
<노드 IP> : NodePort 방식으로 접속
간단한 테스트 환경에서 주로 사용
LoadBalancer 클라우드 환경 (AWS, GCP, Azure 등)에서

외부 L4 LoadBalancer 자동 생성
외부 클라이언트가 LB -> Service -> Pod로 접근
ExternalName Service가 CNAME 레코드처럼 외부 도메인 주소로 매핑
클러스터 내부 DNS에서 외부 도메인을 사용하도록 설정
ClusterIP 없음 (DNS 기반 매핑만 존재)
구성 요소 구성 요소 설명
Selector (Label 기반) 어떤 Pod를 Service 대상 (Endpoint)으로 묶을지 결정
ClusterIP Service가 가지는 고정 내부 IP (Pod는 절대 사용 불가)
Ports Service가 노출하는 포트 (ex. port=80, targePort=8080)
Endpoints Service가 실제로 트래픽을 전달하는 Pod들의 IP 목록
SessionAffinity 클라이언트 -> 특정 Pod로 고정 연결 (Client IP 방식 등)
kube-proxy 서비스 트래픽을 실제 Pod로 전달하는 컴포넌트
역할 역할 설명
Pod 접근 안정화 Pod 재시작 및 IP 변경에도 동일한 서비스 주소 제공
로드밸런싱 여러 Pod가 있을 경우 자동 분산 처리
내부 DNS 제공 <서비스명>.<네임스페이스>.svc.cluster.local
서비스 유형에 따라 

외부 및 내부 통신 제어
NodePort, LoadBalancer, ClusterIP, ExternalName 등
엔드포인트 자동 관리 Pod가 생성 및 삭제될 때 자동 업데이트
추가 관리 리소스 리소스 설명
Endpoints Service가 실제로 연결되는 Pod들의 IP 리스트
EndpointSlice 확장성을 높인 Endpoints 고도화 리소스
Ingress (추가 기능) HTTP / HTTPS 기반 외부 라우팅을 위한 L7 진입점

 

 

 

kubectl get service 명령을 통해 클러스터 내에서 생성된 서비스 목록 조회


Ⅱ. Kubernetes 리소스 생성


Ⅱ - Ⅰ. Deployment Controller 이용한 Pod 생성

Deployment

Controller

이용한 Pod

생성
구분 설명
개념 Deployment Controller는 사용자가 지정한 Pod 템플릿 (spce)을 기반으로 ReplicaSet 생성
생성된 ReplicaSet이 실제 Pod를 생성 및 관리하도록 제어하는 상위 리소스
생성 구조 Deployment -> ReplicaSet -> Pod 구조로 자동 계층화되어 관리
특징 Pod를 직접 생성하지 않고 Deployment가 ReplicaSet 생성
생성된 ReplicaSet이 Pod 생성 및 유지
Pod의 수 (replicas) 나 이미지 버전이 변경될 경우,

Deployment가 이를 감지하여 롤링 업데이트 (Rolling Update) 수행
Pod가 비정상 종료될 경우, ReplicaSet이 자동으로 새로운 Pod 재생성
역할 Pod 생성 및 버전 관리 자동화
롤링 업데이트 및 롤백 지원
애플리케이션 무중단 배포 환경 제공
생성 확인 명령어 설명
ex) bash kubectl get  deployment Deployment 상태 확인
ex) bash kubectl get rs ReplicaSet 확인
ex) bash kubectl get pods Pod 생성 여부 확인

 

 

 

# hello-minikube 리소스 생성 (Deployment)

 

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.5 명령을 통해 

 

k8s.gcr.io/echoserver:1.5 이미지 사용하여 hello-minikube 리소스 생성

 

kubectl get deploy 명령을 통해 Deployment 리소스가 잘 생성되었는지 확인

 

kukbectl get deploy,pod 명령을 통해 hello-minikube 리소스가

 

실제로 어떤 Pod를 생성했는지 같이 확인

 

 

kubectl describe deploy hello-minikube 명령을 통해

 

hello-minikube 리소스의 상세 상태와 이벤트 확인

 

 

kubectl get deploy,rs,pod 명령을 통해 Deployment 리소스, ReplicaSet 리소스, Pod 정보 확인

 

 

kubectl describe rs hello-minikube-5458498444 명령을 통해 ReplicaSet의 상태, 설정, 이벤트 등 상세 정보 확인

 

 

kubectl get pod 명령을 통해 클러스터 내 Pod 목록 정보를 기본 형태로 확인

 

kubectl get pod –o wide 명령을 통해 기본 get Pod 출력에 추가로 파드 IP 주소, 노드 이름 등 상세 정보 확인

 


Ⅱ - Ⅱ. Deployment Controller 이용하여 NodePort Service 생성

Deployment

Controller

이용하여

NodePort

Service 생성
구분 설명
개념 NodePort Service는 클러스터 외부에서도 접근할 수 있도록

노드의 특정 포트 (NodePort)를 열어주는 Servie 타입
 Deployment로 생성된 Pod를 외부 트래픽과 연결하는 역할 수행
구성 구조 Deployment -> ReplicaSet -> Pod -> Service (NodePort) 형태로 연결되어,

클러스터 내부 Pod를 외부 클라이언트가 접근 가능하게 함
특징 클러스터 외부 요청을 노드의 고정 포트 (기본 30000 ~ 32767)를 통해 수신 
NodePort는 내부적으로 ClusterIP 자동 생성
생성된 ClusterIP를 통해 Pod로 트래픽 전달
외부 접속 주소 : http://<Node_IP> : <Node_Port>
역할  Deployment로 실행 중인 Pod를 외부 네트워크와 연결
Node IP와 NodePort를 이용해 외부 사용자 직접 접근 가능
서비스 트래픽이 Pod 간에 자동 로드밸런싱
확인 명령어 명령어 설명
ex) bash kubectl get svc 서비스 목록 확인
ex) bash kubectl describe svc hello-minikube 포트 및 엔드포인트 확인

 

 

# hello-minikube (Deployment) 를 대상으로 NodePort 타입의 Service 생성

 

kubectl expose deployment hello-minikube --type=NodePort 명령을 통해

 

hello-minikube (Deployment)를  대상으로 NodePort 타입의 Service 생성하도록 지정

 

--port=8080 옵션을 통해 hello-minikube (Deployment)의 Pod를 8080번 포트로 노출시키도록 설정

 

kubectl get services 명령을 통해 Kubernetes 클러스터 내 생성된 모든 서비스의 상태와 기본 정보 확인

 

 

# loadbalancer 리소스 생성 (Deployment)

 

kubectl create deployment loadbalancer —image=k8s.gcr.io/echoserver:1.5 명령을 통해

 

k8s.gcr.io/echoserver:1.5 이미지 사용하여 loadbalacner Deployment 생성

 

kubectl get deploy 명령을 통해 생성된 Deployment 목록 조회

 

 

# loadbalancer (Deployment)를 기반으로 LoadBalancer 타입의 Service 생성

 

kubectl expose deployment loadbalancer --type=LoadBalancer 명령을 통해

 

loadbalancer (Deployment)를 기반으로 LoadBalancer 타입의 Service 생성

 

--port=8080 옵션을 통해 loadbalancer (Deployment)를 Pod를 8080번 포트로 노출시키도록 설정

 

kubectl get services 명령을 통해 클러스터 내 모든 서비스 목록 조회

 

 

# 노드 일시 정지

 

minikube pause 명령을 통해 Minikube 클러스터에서 실행 중인 노드 일시 정지

 

minikube status 명령을 통해 잘 정지되었는지 확인

 

 

# 정지되었던 것 다시 실행

 

minikube unpause 명령을 통해 Minikube 클러스터 내 일시 정지 상태인 노드와 컨테이너를 실행 상태로 되돌림

 

minikube status 명령을 통해 다시 실행되었는지 확인

 

 

# 리소스 삭제

 

minikube delete —all 명령을 통해 Minikube 클러스터와 관련된 모든 프로필과 리소스 삭제

 

minikube status 명령을 통해 잘 삭제되었는지 확인

 

 

minikube start —force 명령을 통해 Minikube 클러스터 재시작

'Kubernetes' 카테고리의 다른 글

Kubernetes Label과 Annotation  (0) 2026.06.13
Kubernetes Ingress  (0) 2026.06.13
Kubernetes Service  (0) 2026.06.13
kubernetes Controller  (0) 2026.06.13
Kubernetes 기본 개념  (0) 2026.06.13