본문 바로가기
Container/Kubernetes

[k8s] Minikube란? 명령어, (Addon)애드온

by ganyga 2024. 3. 5.

Minikube란?

  • 가벼운 Kubernetes 구현체
  • Linux, macOS, Windows에서 구동이 가능함
  • 로컬 머신에 VM을 만들고 하나의 노드로 구성된 간단한 클러스터를 생성함

 

Minikube 설치

https://ganyga.tistory.com/entry/k8s-Mac-M1%EC%97%90-Docker-Kubectl-Minikube-%EC%84%A4%EC%B9%98

 

[k8s] Mac M1에 Docker, Kubectl, Minikube 설치

Docker Desktop 설치 https://ganyga.tistory.com/entry/Docker-Mac-m1%EC%97%90-Docker-Desktop-%EC%84%A4%EC%B9%98%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95 [Docker] Mac M1에 Docker Desktop 설치 https://docs.docker.com/desktop/install/mac-install/ Install Docke

ganyga.tistory.com

 

Minikube 명령어

minikube --help
minikube는 개발 워크플로우에 최적화된 로컬 쿠버네티스를 제공하고 관리합니다.

기본 명령어:
  start            로컬 쿠버네티스 클러스터를 시작합니다
  status           로컬 쿠버네티스 클러스터의 상태를 가져옵니다
  stop             실행 중인 로컬 쿠버네티스 클러스터를 중지합니다
  delete           로컬 쿠버네티스 클러스터를 삭제합니다
  dashboard        minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다
  pause            쿠버네티스를 잠시 멈춥니다
  unpause          잠시 멈췄던 쿠버네티스를 재개합니다

이미지 명령어
  docker-env       Provides instructions to point your terminal's docker-cli to the Docker Engine inside minikube.
(Useful for building docker images directly inside minikube)
  podman-env       Configure environment to use minikube's Podman service
  cache            Manage cache for images
  image            Manage images

환경 설정 및 관리 명령어:
  addons           Enable or disable a minikube addon
  config           Modify persistent configuration values
  profile          Get or list the current profiles (clusters)
  update-context   Update kubeconfig in case of an IP or port change

Networking and Connectivity Commands:
  service          서비스에 연결된 URL을 반환합니다
  tunnel           Connect to LoadBalancer services

고급 명령어:
  mount            특정 디렉토리를 minikube 에 마운트합니다
  ssh              (디버깅을 위해) minikube 환경에 접속합니다
  kubectl          클러스터 버전에 맞는 kubectl 바이너리를 실행합니다
  node             노드를 추가하거나 삭제, 나열합니다
  cp               Copy the specified file into minikube

Troubleshooting Commands:
  ssh-key          Retrieve the ssh identity key path of the specified node
  ssh-host         Retrieve the ssh host key of the specified node
  ip               지정된 노드의 IP 주소를 가져옵니다
  logs             로컬 쿠버네티스 클러스터를 디버그하기 위해 로그를 반환합니다
  update-check     현재 그리고 최신 버전을 출력합니다
  version          minikube 의 버전을 출력합니다
  options          Show a list of global command-line options (applies to all commands).

Other Commands:
  completion       Generate command completion for a shell
  license          Outputs the licenses of dependencies to a directory

Cluster 생성

아무런 옵션을 주지 않으면, 이름이 minikube인 단일 클러스터 생성

minikube start
kubectl get nodes -o wide

NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
minikube   Ready    control-plane   53m   v1.28.3   192.168.49.2   <none>        Ubuntu 22.04.3 LTS   6.6.16-linuxkit   docker://24.0.7

 

클러스터 생성 옵션

  • -p : 클러스터 이름 지정
  • --kubernetes-version=v1.28.0 : 클러스터 특정 버전 지정
  • --static-ip 192.168.0.100 : 고정 IP 설정

 

클러스터에 대한 고정 IP 설정 방법(--static-ip 옵션 사용)

전제 조건

  • minikube v1.29.0 이상
  • Docker 또는 Podman 드라이버

유효한 고정 IP 범위

10.0.0.2 - 10.255.255.254
172.16.0.2 - 172.31.255.254
192.168.0.2 - 192.168.255.254

 

참고 : 기존 클러스터에는 고정 IP를 추가할 수 없으며, 클러스터를 삭제하고 다시 생성해야 함

minikube start --driver docker --static-ip 192.168.0.100

Minikube 사용 가능한 Addon(애드온) 리스트

minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | minikube                       |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | disabled     | Kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | minikube                       |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | minikube                       |
| inspektor-gadget            | minikube | disabled     | 3rd party                      |
|                             |          |              | (inspektor-gadget.io)          |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubeflow                    | minikube | disabled     | 3rd party                      |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-device-plugin        | minikube | disabled     | 3rd party (NVIDIA)             |
| nvidia-driver-installer     | minikube | disabled     | 3rd party (Nvidia)             |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | minikube                       |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | minikube                       |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| storage-provisioner-rancher | minikube | disabled     | 3rd party (Rancher)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

 

애드온 활성화 방법

[cluster name] addons enable [addon name]

minikube addons enable metrics-server

애드온 비활성화 방법

[cluster name] addons disable [addon name]

minikube addons disable metrics-server