DevOps/Kubernetes

[Kubernetes] minikube란? 설치 및 사용법

TTOII 2022. 6. 10. 16:48
728x90

🚀 minikube란 ?

minikube는 macOS, Linux 및 Windows에서 로컬 쿠버네티스 클러스터를 쉽고 빠르게 세팅할 수 있는 도구이다.

 

🚀 minikube 설치

해당 설치방법은 Windows를 기반으로 작성되었다.

minikube start | minikube (k8s.io)

choco install minikube

choco를 이용해 minikube를 설치한다. (choco가 없다면 Chocolatey 개념 및 설치 방법를 참조)

 

🚀 minikube start

PS C:\Users\Shinsohui> minikube start
😄  Microsoft Windows 10 Education 10.0.19044 Build 19044 의 minikube v1.25.2
✨  자동적으로 virtualbox 드라이버가 선택되었습니다
👍  minikube 클러스터의 minikube 컨트롤 플레인 노드를 시작하는 중
🔥  virtualbox VM (CPUs=2, Memory=4000MB, Disk=20000MB) 를 생성하는 중 ...
❗  This VM is having trouble accessing https://k8s.gcr.io
💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  쿠버네티스 v1.23.3 을 Docker 20.10.12 런타임으로 설치하는 중
    ▪ kubelet.housekeeping-interval=5m
    ▪ 인증서 및 키를 생성하는 중 ...
    ▪ 컨트롤 플레인이 부팅...
    ▪ RBAC 규칙을 구성하는 중 ...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🔎  Kubernetes 구성 요소를 확인...
🌟  애드온 활성화 : default-storageclass, storage-provisioner
🏄  끝났습니다! kubectl이 "minikube" 클러스터와 "default" 네임스페이스를 기본적으로 사용하도록 구성되었습니다.

minikube 1.25.2 버전이 설치된다.
설치시 어떠한 가상화 드라이버를 사용할 것인지 자동으로 선택한다.
미리 세팅해 놓은 크기가 작은 리눅스 이미지를 자동으로 받는다.
쿠버네티스 1.23.3 버전이 설치된 이미지를 받는다.
CPU=2, Memory=4000MB, Disk=2000MB로 설정한 VM을 생성한다.

 

가상 컴퓨터를 부팅하고 자동으로 kubeadm init을 적용시킨다.

PS C:\Users\Shinsohui> kubectl get nodes
NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   30s   v1.23.3

minikube라는 노드 1개로 이루어진 클러스터가 구성되어 있다.

 

PS C:\Users\Shinsohui> kubectl api-resources

생성 가능한 리소스 목록을 확인할 수 있다.

 

PS C:\Users\Shinsohui> kubectl get sc
NAME                 PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
standard (default)   k8s.io/minikube-hostpath   Delete          Immediate           false                  2m20s

동적 프로비저닝을 위해 standard라는 이름의 스토리지 클래스가 존재한다.

 

PS C:\Users\Shinsohui> kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.100.100:6443
  name: cluster.local
- cluster:
    certificate-authority: C:\Users\Shinsohui\.minikube\ca.crt
    extensions:
    - extension:
        last-update: Mon, 30 May 2022 21:19:43 KST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: cluster_info
    server: https://192.168.59.101:8443
  name: minikube

직접 kubespray로 설치한 cluster.localminikube가 존재한다.

 

users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: minikube
  user:
    client-certificate: C:\Users\Shinsohui\.minikube\profiles\minikube\client.crt
    client-key: C:\Users\Shinsohui\.minikube\profiles\minikube\client.key
contexts:
- context:
    cluster: cluster.local
    user: kubernetes-admin
  name: kubernetes-admin@cluster.local
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Mon, 30 May 2022 21:19:43 KST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube

minikube start 하면 config 파일이 자동으로 업데이트된다.

 

PS C:\Users\Shinsohui> kubectl config get-clusters
NAME
cluster.local
minikube

PS C:\Users\Shinsohui> kubectl config get-users
NAME
kubernetes-admin
minikube

PS C:\Users\Shinsohui> kubectl config get-contexts
CURRENT   NAME                             CLUSTER         AUTHINFO           NAMESPACE
          kubernetes-admin@cluster.local   cluster.local   kubernetes-admin
*         minikube                         minikube        minikube           default
PS C:\Users\Shinsohui> kubectl config use-context kubernetes-admin@cluster.local

쿠버네티스와 마찬가지로 다음과 같이 컨텍스트를 변경할 수 있다.

멀티 클러스터, 멀티 유저를 사용할 때는 어떤 클러스터에서 어떤 자격 증명으로 작업을 하고 있는지 주의해야 한다.

 

🚀 minikube 명령어

클러스터 상태 확인

PS C:\Users\Shinsohui> minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

 

가상 컴퓨터 접속

PS C:\Users\Shinsohui> minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ cat /etc/os-release
NAME=Buildroot
VERSION=2021.02.4-dirty
ID=buildroot
VERSION_ID=2021.02.4
PRETTY_NAME="Buildroot 2021.02.4"
$

어떤 리눅스인지 확인할 수 있다. minikube에서 사용하는 리눅스는 자체적으로 만든 리눅스이다.

 

$ apt
-bash: apt: command not found
$ yum
-bash: yum: command not found
$ apk
-bash: apk: command not found

패키지 관리자 명령어를 실행할 수 없어 별도로 패키지를 설치할 수 없다.

 

$ kubectl
-bash: kubectl: command not found

또한 가상 컴퓨터 내부에는 kubectl 명령어가 없다. 원한다면 설치할 수는 있다.

 

$ docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS     NAMES
fd7ea2351f40   6e38f40d628d           "/storage-provisioner"   6 minutes ago   Up 6 minutes             k8s_storage-provisioner_storage-provisioner_kube-system_3d73e56e-9556-49a0-9db3-0cf7c93d7f0f_3

가상 컴퓨터 내부에 도커는 설치되어 있다.

 

PS C:\Users\Shinsohui> minikube docker-env
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://192.168.59.101:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\Shinsohui\.minikube\certs"
$Env:MINIKUBE_ACTIVE_DOCKERD = "minikube"
# To point your shell to minikube's docker-daemon, run:
# & minikube -p minikube docker-env --shell powershell | Invoke-Expression

PowerShell에서 변수 = 값 쌍으로 이루어진 환경변수가 있다.
환경변수를 적용시키기 위해서 다음과 같이 명령을 실행하면 된다.

 

PS C:\Users\Shinsohui> minikube -p minikube docker-env --shell powershell | Invoke-Expression
PS C:\Users\Shinsohui> docker ps

도커 명령어를 원격에서 실행할 수 있게된다.
도커 명령어가 해당 환경변수를 참조해서 실행하게 된다.

 

변수는 해당되는 터미널에서만 유효하므로 PowerShell을 닫았다가 열면 사라진다.

minikube -p minikube docker-env --shell powershell | Invoke-Expression 명령을 내려서 변수를 등록한 후 도커 명령어를 사용해야한다.

 

클러스터 삭제

PS C:\Users\Shinsohui> minikube delete
🔥  virtualbox 의 "minikube" 를 삭제하는 중 ...
💀  "minikube" 클러스터 관련 정보가 모두 삭제되었습니다

PS C:\Users\Shinsohui> minikube status
🤷  Profile "minikube" not found. Run "minikube profile list" to view all profiles.
👉  To start a cluster, run: "minikube start"

virtualbox에서 VM을 삭제한다. status로 확인해보면 설정된 클러스터가 없다고 나타난다.

 

PS C:\Users\Shinsohui> minikube profile list

🤹  Exiting due to MK_USAGE_NO_PROFILE: No minikube profile was found.
💡  권장:

    You can create one using 'minikube start'.

minikube start를 하면 minikube라는 이름의 profile이 만들어진다.
profile에는 minikube를 설치하기 위한 기본 정보들이 들어있다.

 

minikube start --help

CPU, Memory, 쿠버네티스 클러스터 버전 등의 옵션은 minikube를 start할 때만 적용된다.

즉, 이미 생성된 VM에는 적용되지 않으므로 반드시 삭제했다가 다시 만들어야 한다.

 

PS C:\Users\Shinsohui> minikube start --cpus 4 --memory 4G --disk-size 30G --kubernetes-version v1.22.9

다음 옵션으로 새로운 minikube를 생성한다.
이미지를 변경했으므로 새로운 버전의 이미지를 다운받는다.

 

설치 완료 후

PS C:\Users\Shinsohui> minikube ssh
$ df -h
$ lscpu
$ head /proc/meminfo
MemTotal:        4033032 kB
MemFree:         1706228 kB
MemAvailable:    2533772 kB
Buffers:           12956 kB
Cached:          1673956 kB
SwapCached:            0 kB
Active:           900304 kB
Inactive:        1242952 kB
Active(anon):     795012 kB
Inactive(anon):   355968 kB
PS C:\Users\Shinsohui> minikube node list
minikube        192.168.59.102
PS C:\Users\Shinsohui> minikube node add
😄  노드 m02 를 클러스터 minikube 에 추가합니다
❗  Cluster was created without any CNI, adding a node to it might cause broken networking.
👍  Starting worker node minikube-m02 in cluster minikube
🔥  virtualbox VM (CPUs=4, Memory=2200MB, Disk=30720MB) 를 생성하는 중 ...|

VM을 하나 더 생성해 자동으로 kubeadm join을 실행한다.
마찬가지로 필요하다면 옵션으로 리소스 양을 지정할 수 있다.

 

-n 옵션 : 시작 시 쿠버네티스 클러스터의 노드 개수를 지정할 수 있다. default : 1

 

PS C:\Users\Shinsohui> kubectl get nodes
NAME           STATUS   ROLES                  AGE     VERSION
minikube       Ready    control-plane,master   12m     v1.22.9
minikube-m02   Ready    <none>                 2m55s   v1.22.9

노드가 추가되었고 join까지 완료되었다.

 

🚀 add-on 설치하기

PS C:\Users\Shinsohui> minikube node list
minikube        192.168.59.102
minikube-m02    192.168.59.103
PS C:\Users\Shinsohui> minikube ip
192.168.59.102

minikube의 컨트롤 플레인의 ip를 볼 수 있다.

 

PS C:\Users\Shinsohui> minikube ssh
$ ip a s
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b6:b9:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.59.102/24 brd 192.168.59.255 scope global dynamic eth1
       valid_lft 468sec preferred_lft 468sec

컨테이너 내부에서 확인한 값과 동일하다.

 

간단한 파드와 서비스를 만들어보자. 

PS C:\Users\Shinsohui> kubectl create deployment myapp --image nginx --replicas 3
deployment.apps/myapp created

PS C:\Users\Shinsohui> kubectl expose deployment myapp --name mysvc --port 80 --target-port 80
service/mysvc exposed

PS C:\Users\Shinsohui> kubectl get po
NAME                     READY   STATUS    RESTARTS   AGE
myapp-6d8d776547-8fv9v   1/1     Running   0          41s
myapp-6d8d776547-g5cm4   1/1     Running   0          41s
myapp-6d8d776547-v9ztr   1/1     Running   0          41s

PS C:\Users\Shinsohui> kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   17m
mysvc        ClusterIP   10.100.214.57   <none>        80/TCP    11s

기본적으로 ClusterIP 타입의 서비스가 생성된다.

 

kubectl edit svc mysvc
  type: NodePort

타입을 NodePort로 변경한다.

 

PS C:\Users\Shinsohui> kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        6m45s
mysvc        NodePort    10.103.242.238   <none>        80:31346/TCP   3m21s

 

이제 외부에서도 접속 가능하다.

 

PS C:\Users\Shinsohui> minikube service list
|-------------|------------|--------------|-----------------------------|
|  NAMESPACE  |    NAME    | TARGET PORT  |             URL             |
|-------------|------------|--------------|-----------------------------|
| default     | kubernetes | No node port |
| default     | mysvc      |           80 | http://192.168.59.107:31346 |
| kube-system | kube-dns   | No node port |
|-------------|------------|--------------|-----------------------------|

쿠버네티스 클러스터 내의 모든 서비스의 목록이 나온다.
NodePort, LoadBalancer 타입은 URL에 접속 가능한 주소가 출력되며 해당 주소를 통해 서비스에 접속할 수 있다.

 

kubectl edit svc mysvc
  type: LoadBalancer

이번에는 LoadBalancer 타입으로 변경해보자

 

PS C:\Users\Shinsohui> kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP        9m55s
mysvc        LoadBalancer   10.103.242.238   <pending>     80:31346/TCP   6m31s

클라우드 환경이 아니므로 클러스터 외부에 로드밸런서를 만들 수 없다.
따라서 LoadBalancer 서비스는 EXTERNAL-IP<pending> 상태가 된다.

METALLB를 이용할 수 있지만 minikube에는 유용한 add-on 기능이 있다.

 

PS C:\Users\Shinsohui> minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | third-party (ambassador)       |
| auto-pause                  | minikube | disabled     | google                         |
| csi-hostpath-driver         | minikube | disabled     | kubernetes                     |
| dashboard                   | minikube | disabled     | kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | kubernetes                     

| storage-provisioner         | minikube | enabled ✅   | google                         |

minikube에서 추가할 수 있는 다양한 addon 리스트를 확인할 수 있다.
목록에 없는 것도 yaml 파일로 직접 적용할 수 있다.

STATUS에서 enabled는 현재 설치되어있는 상태라는 뜻이다.
MAINTAINER는 해당 애드온을 관리하는 주체를 말한다.

 

🌟  애드온 활성화 : storage-provisioner, default-storageclass

default-storageclass, storage-provisioner 애드온은 기본적으로 활성화되는 애드온으로 동적 프로비저너를 위해 제공된다.

 

PS C:\Users\Shinsohui> kubectl top nodes
error: Metrics API not available

현재 메트릭 API가 사용 불가하므로 매트릭을 수집할 수 없다.
metrics server가 설치되어 있지 않기 때문이다.

 

PS C:\Users\Shinsohui> kubectl get po -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-78fcd69978-csxpz           1/1     Running   0          17m
etcd-minikube                      1/1     Running   0          18m
kindnet-n6xx8                      1/1     Running   0          16m
kindnet-r4b67                      1/1     Running   0          16m
kube-apiserver-minikube            1/1     Running   0          18m
kube-controller-manager-minikube   1/1     Running   0          18m
kube-proxy-dtv62                   1/1     Running   0          17m
kube-proxy-mkpn9                   1/1     Running   0          16m
kube-scheduler-minikube            1/1     Running   0          18m
storage-provisioner                1/1     Running   0          18m

목록에 metrics server는 보이지 않는다.
kindnet-n6xx8은 기본으로 적용되는 CNI이다. Calico로 설정할 수도 있다.

 

| metrics-server              | minikube | disabled     | kubernetes

 

metrics-server를 설치해보자

PS C:\Users\Shinsohui> minikube addons enable metrics-server
    ▪ Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
🌟  'metrics-server' 애드온이 활성화되었습니다
| metrics-server              | minikube | enabled ✅   | kubernetes

metrics-server가 설치되었다.

 

PS C:\Users\Shinsohui> kubectl get po -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
metrics-server-77c99ccb96-wmbf5    1/1     Running   0          67s

kube-system 네임스페이스에 metrics-server가 설치된 것을 확인할 수 있다.

 

이번에는 metallb 애드온을 설치해보자

PS C:\Users\Shinsohui> minikube addons enable metallb
    ▪ Using image metallb/speaker:v0.9.6
    ▪ Using image metallb/controller:v0.9.6
🌟  'metallb' 애드온이 활성화되었습니다

PS C:\Users\Shinsohui> kubectl get ns
NAME              STATUS   AGE
default           Active   24m
kube-node-lease   Active   24m
kube-public       Active   24m
kube-system       Active   24m
metallb-system    Active   5s

PS C:\Users\Shinsohui> kubectl get all -n metallb-system
NAME                              READY   STATUS    RESTARTS   AGE
pod/controller-66bc445b99-jfzsl   1/1     Running   0          23s
pod/speaker-q4lc6                 1/1     Running   0          23s
pod/speaker-w87xm                 1/1     Running   0          23s

NAME                     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
daemonset.apps/speaker   2         2         2       2            2           beta.kubernetes.io/os=linux   23s

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/controller   1/1     1            1           23s

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/controller-66bc445b99   1         1         1       23s
PS C:\Users\Shinsohui> kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP        25m
mysvc        LoadBalancer   10.103.242.238   <pending>     80:31346/TCP   21m

metallb를 설치했지만 여전히 LoadBalancer 서비스의 EXTERNAL-IP<pending> 상태이다.

 

| metallb                     | minikube | enabled ✅   | third-party (metallb)          |

애드온 리스트에서 확인해보면 enabled 상태이다.
하지만 애드온을 enable 한다고 모두 정상 작동하는 것이 아니다.

 

PS C:\Users\Shinsohui> minikube addons disable metallb

disable을 통해 애드온을 삭제할 수 있다.

 

PS C:\Users\Shinsohui> minikube addons
addons modifies minikube addons files using subcommands like "minikube addons enable dashboard"

Available Commands:
  configure   Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For
a list of available addons use: minikube addons list
  disable     Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list
of available addons use: minikube addons list
  enable      Enables the addon w/ADDON_NAME within minikube. For a list of available addons use: minikube addons list
  images      List image names the addon w/ADDON_NAME used. For a list of available addons use: minikube addons list
  list        Lists all available minikube addons as well as their current statuses (enabled/disabled)
  open        Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of
available addons use: minikube addons list

Usage:
  minikube addons SUBCOMMAND [flags] [options]

Use "minikube <command> --help" for more information about a given command.
Use "minikube options" for a list of global command-line options (applies to all commands).

configure라는 것은 애드온을 enable 하기 전에 세팅해야 하는 것들을 의미한다.

metallb를 설치할 때 metallb에 사용할 네트워크 대역을 지정했었다.
실제로 로드밸런서에 부여할 ip 대역을 지정해야 한다.
metallb 설치 시의 configure가 이것이다.

우리가 metallb 애드온을 설치할 때 ip 대역을 지정하는 작업을 하지 않았기 때문에 정상 작동하지 않았던 것이다.

 

PS C:\Users\Shinsohui> minikube addons enable metrics-server
    ▪ Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
🌟  'metrics-server' 애드온이 활성화되었습니다

PS C:\Users\Shinsohui> minikube addons enable ingress
    ▪ Using image k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
    ▪ Using image k8s.gcr.io/ingress-nginx/controller:v1.1.1
    ▪ Using image k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
🔎  Verifying ingress addon...
🌟  'ingress' 애드온이 활성화되었습니다

PS C:\Users\Shinsohui> kubectl get ns
NAME              STATUS   AGE
default           Active   6m39s
ingress-nginx     Active   54s
kube-node-lease   Active   6m40s
kube-public       Active   6m40s
kube-system       Active   6m40s

PS C:\Users\Shinsohui> kubectl get po -A
NAMESPACE       NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx   ingress-nginx-admission-create--1-wdhgs     0/1     Completed   0          60s
ingress-nginx   ingress-nginx-admission-patch--1-9zdzn      0/1     Completed   0          60s
ingress-nginx   ingress-nginx-controller-5fc9586f46-9mtvd   1/1     Running     0          60s
kube-system     coredns-78fcd69978-l2hls                    1/1     Running     0          6m29s
kube-system     etcd-minikube                               1/1     Running     0          6m43s
kube-system     kube-apiserver-minikube                     1/1     Running     0          6m44s
kube-system     kube-controller-manager-minikube            1/1     Running     0          6m43s
kube-system     kube-proxy-djb6b                            1/1     Running     0          6m29s
kube-system     kube-scheduler-minikube                     1/1     Running     0          6m45s
kube-system     metrics-server-77c99ccb96-2st9l             1/1     Running     0          70s
kube-system     storage-provisioner                         1/1     Running     0          6m42s
PS C:\Users\Shinsohui> minikube addons configure metallb
-- Enter Load Balancer Start IP:

사용할 ip 대역을 지정해야한다. 이때 임의의 ip 대역을 부여해서는 안된다.
minikube가 사용하는 대역을 사용해야 한다.

 

PS C:\Users\Shinsohui> minikube addons configure metallb
-- Enter Load Balancer Start IP: 192.168.59.200
-- Enter Load Balancer End IP: 192.168.59.209
    ▪ Using image metallb/speaker:v0.9.6
    ▪ Using image metallb/controller:v0.9.6
✅  metallb 이 성공적으로 설정되었습니다

PS C:\Users\Shinsohui> kubectl get ns
NAME              STATUS   AGE
default           Active   10m
ingress-nginx     Active   4m54s
kube-node-lease   Active   10m
kube-public       Active   10m
kube-system       Active   10m
metallb-system    Active   6s

PS C:\Users\Shinsohui> kubectl get cm -n metallb-system
NAME               DATA   AGE
config             1      15s
kube-root-ca.crt   1      15s

PS C:\Users\Shinsohui> kubectl describe cm -n metallb-system config
Name:         config
Namespace:    metallb-system
Labels:       <none>
Annotations:  <none>

Data
====
config:
----
address-pools:
- name: default
  protocol: layer2
  addresses:
  - 192.168.59.200-192.168.59.209


BinaryData
====

Events:  <none>
PS C:\Users\Shinsohui>
PS C:\Users\Shinsohui> kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>           443/TCP        13m
mysvc        LoadBalancer   10.107.90.245   192.168.59.200   80:30888/TCP   36s

PS C:\Users\Shinsohui> minikube service list
|---------------|------------------------------------|--------------|-----------------------------|
|   NAMESPACE   |                NAME                | TARGET PORT  |             URL             |
|---------------|------------------------------------|--------------|-----------------------------|
| default       | kubernetes                         | No node port |
| default       | mysvc                              |           80 | http://192.168.59.109:30888 |
| ingress-nginx | ingress-nginx-controller           | http/80      | http://192.168.59.109:30899 |
|               |                                    | https/443    | http://192.168.59.109:31042 |
| ingress-nginx | ingress-nginx-controller-admission | No node port |
| kube-system   | kube-dns                           | No node port |
| kube-system   | metrics-server                     | No node port |
|---------------|------------------------------------|--------------|-----------------------------|

 

192.168.59.200으로 정상적으로 접속 가능하다.

 

PS C:\Users\Shinsohui> minikube addons enable dashboard

새롭게 VM을 만들 때 적용하고 싶은 옵션이 있다면 config에 적용할 수 있다.

 

PS C:\Users\Shinsohui> minikube config
config modifies minikube config files using subcommands like "minikube config set driver kvm2"
Configurable fields:

 * driver
 * vm-driver
 * container-runtime
 * feature-gates
 * v
 * cpus
 * disk-size
 * host-only-cidr
 * memory
 * log_dir
 * kubernetes-version
 * iso-url
 * WantUpdateNotification
 * WantBetaUpdateNotification
 * ReminderWaitPeriodInHours
 * WantNoneDriverWarning
 * WantVirtualBoxDriverWarning
 * profile
 * bootstrapper
 * insecure-registry
 * hyperv-virtual-switch
 * disable-driver-mounts
 * cache
 * EmbedCerts
 * native-ssh

설정 가능한 config 목록을 볼 수 있다.

 

PS C:\Users\Shinsohui> minikube config set cpus 2
❗  These changes will take effect upon a minikube delete and then a minikube start

PS C:\Users\Shinsohui> minikube config set memory 4G
❗  These changes will take effect upon a minikube delete and then a minikube start

PS C:\Users\Shinsohui> minikube config set driver virtualbox
❗  These changes will take effect upon a minikube delete and then a minikube start

PS C:\Users\Shinsohui> minikube config set kubernetes-version v1.22.9

PS C:\Users\Shinsohui> minikube config view
- driver: virtualbox
- kubernetes-version: v1.22.9
- memory: 4G
- cpus: 2

설정한 값들을 모두 확인할 수 있다. minikube start하면 적용된다.

 

PS C:\Users\Shinsohui> minikube delete
🔥  virtualbox 의 "minikube" 를 삭제하는 중 ...
💀  "minikube" 클러스터 관련 정보가 모두 삭제되었습니다

PS C:\Users\Shinsohui> kubectl config view

minikube를 삭제하면 kubeconfig 파일에서도 삭제된다.

728x90