5. Introduction - Minikube

2024. 6. 24. 01:38·Kubernetes
이 글은 아래 자료를 참고하여 작성되었습니다.

Udemy [Kubernetes For the Absolute Beginners]
https://minikube.sigs.k8s.io/docs/

 

1. Minikube란?

Minikube는 로컬 환경에서 쿠버네티스(Kubernetes)를 실행할 수 있도록 도와주는 툴이다. 단일 노드 쿠버네티스 클러스터를 빠르게 생성할 수 있으며, 개발, 테스트, 학습 목적으로 주로 사용된다. Minikube는 다양한 쿠버네티스 컴포넌트(api 서버, etcd, 스케줄러, 컨트롤러 매니저, kubelet, 컨테이너 런타임 등)를 하나의 패키지로 제공하여 쉽게 설치하고 실행할 수 있게 해 준다. 

 

2. Minikube의 장단점

2-1. 장점

  1. 간편한 설치와 설정: 몇 가지 명령어만으로 쿠버네티스 클러스터를 신속하게 생성할 수 있다
  2. 다양한 하이퍼바이저 지원: VirtualBox, KVM, Hyper-V 등 여러 하이퍼바이저에서 실행할 수 있다
  3. 빠른 초기화: 단일 노드 클러스터로 빠르게 시작할 수 있다
  4. 로컬 개발 환경에 적합: 개발과 테스트 목적으로 로컬에서 사용할 수 있어 클라우드 비용을 절감할 수 있다
  5. 다양한 애드온 지원: Ingress, Dashboard, Metrics Server 등 다양한 쿠버네티스 애드온을 쉽게 추가할 수 있다

2-2. 단점

  1. 생산 환경에 부적합: 단일 노드로 구성되므로 대규모 프로덕션 환경에서는 사용할 수 없다
  2. 리소스 제한: 로컬 시스템의 자원에 의존하므로, 대규모 애플리케이션 테스트에 한계가 있다
  3. 퍼포먼스 이슈: 로컬 시스템의 성능에 따라 퍼포먼스가 저하될 수 있다

 

3. Minikube 설치방법

3-1. 요구사항

  • 하이퍼바이저 혹은 컨테이너 런타임 설치
    • 하이퍼바이저: VirtualBox, VMware Fusion, Hyper-V, KVM 등
    • 컨테이너 런타임: Docker, containerd, Rancher, CRI-O 등
  • kubectl 설치: 쿠버네티스 클러스터와 상호 작용하기 위해 필요.
  • reference: Minikube Start
 

minikube start

minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll

minikube.sigs.k8s.io

3-2. 기본적인 명령어

# 클러스터 시작
minikube start

# 클러스터 상태 확인
minikube status

# 클러스터 중지
minikube stop

# 클러스터 삭제
minikube delete

# 클러스터 대시보드 표시
minikube dashboard
# 클러스터 주요 정보 확인 (클러스터의 마스터 서버와 주요 서비스의 상태 및 엔드포인트 주소)
kubectl cluster-info

# 클러스터에 속한 모든 노드(워커 머신)의 목록과 상태 확인
# NAME  STATUS  ROLES  AGE  VERSION
kubectl get nodes

# -o wide 옵션으로 더 많은 정보 조회 가능
# NAME  STATUS  ROLES  AGE  VERSION  INTERNAL-IP  EXTERNAL-IP  OS-IMAGE  KERNEL-VERSION  CONTAINER-RUNTIME
kubectl get nodes -o wide



4. macOS에서의 리눅스 컨테이너 실행

  1. Docker의 기본 원리:
    • Docker는 컨테이너가 호스트 시스템의 커널을 공유하도록 설계되었다. 리눅스 기반의 Docker는 리눅스 커널을 사용하여 컨테이너를 실행한다.
    • Docker 컨테이너는 호스트 커널을 공유하기 때문에, 동일한 커널 계열(리눅스)에서만 실행될 수 있다.
  2. macOS에서 Docker 사용:
    • macOS는 유닉스 기반의 운영 체제로, 리눅스 커널을 사용하지 않는다. 따라서 리눅스 기반의 Docker 컨테이너를 직접 실행할 수 없다.
    • 이를 해결하기 위해, Docker는 macOS에서 리눅스 가상 머신(VM)을 사용한다. 이 VM은 lightweight 하이퍼바이저 역할을 하며, 리눅스 커널을 제공하여 리눅스 컨테이너를 실행할 수 있게 한다.
  3. Docker Desktop:
    • Docker Desktop for Mac은 HyperKit이라는 경량 하이퍼바이저를 사용하여 macOS에서 리눅스 VM을 실행한다.
    • HyperKit은 macOS의 하이퍼바이저 프레임워크를 기반으로 하며, 이 VM 안에서 리눅스 커널이 실행되어 리눅스 컨테이너를 지원한다.
    • 이 VM은 Docker Desktop이 백그라운드에서 관리하며, 사용자는 이를 통해 리눅스 컨테이너를 마치 로컬 시스템에서 실행하는 것처럼 사용할 수 있다.
  4. Minikube와 Docker 드라이버:
    • Minikube는 Docker 드라이버를 사용하여 macOS에서 Kubernetes 클러스터를 실행할 수 있다.
    • Docker 드라이버를 사용할 경우, Minikube는 Docker 컨테이너로 실행된다. 이 Docker 컨테이너는 앞서 설명한 리눅스 VM 내에서 실행되므로 리눅스 기반 Kubernetes 노드로 동작한다.
  5. 정리
    1. Docker의 리눅스 VM 사용: Docker Desktop for Mac은 HyperKit을 사용하여 리눅스 VM을 실행한다. 이 VM은 리눅스 커널을 제공하여 리눅스 컨테이너를 실행할 수 있게 된다.
    2. Minikube의 Docker 드라이버: Minikube는 Docker 드라이버를 사용하여 이 리눅스 VM 내에서 Kubernetes 클러스터를 실행한다. 따라서 macOS에서도 리눅스 기반 Kubernetes 클러스터를 사용할 수 있다.

'Kubernetes' 카테고리의 다른 글

7. Core Concepts - ReplicaSet  (0) 2024.06.25
6. Core Concepts - pod  (0) 2024.06.24
4. Introduction - Kubernetes with YAML  (1) 2024.06.24
3. Introduction - YAML  (0) 2024.06.18
2. Kubernetes Overview - orchestration  (0) 2024.06.16
'Kubernetes' 카테고리의 다른 글
  • 7. Core Concepts - ReplicaSet
  • 6. Core Concepts - pod
  • 4. Introduction - Kubernetes with YAML
  • 3. Introduction - YAML
SerenaDev
SerenaDev
나의 기술블로그 입니다.
  • SerenaDev
    나의 기술블로그
    SerenaDev
    • 분류 전체보기 (33)
      • FastAPI (1)
      • Iceberg (6)
      • Kubernetes (24)
      • ETC (1)
      • 독서 (1)
  • hELLO· Designed By정상우.v4.10.0
SerenaDev
5. Introduction - Minikube
상단으로

티스토리툴바