minikube
=========
###### tags: `kubernetes`
<kbd>minikube</kbd> runs an all-in-one or a multi-node local Kubernetes cluster on your personal computer.
## how to install minikube
```shell=
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
```
## how to start
#### 「docker」 driver
```shell=
minikube start --driver=docker --kubernetes-version=v1.28.2
minikube config set driver docker
```
> The direct access only works on Linux, the docker network is not accessible on macOS or on Windows
> > 所以需要使用<kbd>minikube tunnel</kbd>

#### 「hyperkit」 driver
```shell=
minikube start --driver=hyperkit \
--kubernetes-version=v1.28.2 \
--nodes=1 \
--memory=8g --cpus=4 --disk-size=20g \
--force-systemd=true
minikube config set driver hyperkit
```
#### parameter options
+ `--driver=''`:
~ Driver is one of: virtualbox, parallels, hyperkit, vmware, qemu2, docker, podman (experimental), ssh (defaults
to auto-detect)
+ `--container-runtime=''`:
~ The container runtime to be used. Valid options: **docker**, **cri-o**, **containerd** (default: auto)
+ `--force-systemd=false`:
~ If set, force the container runtime to use systemd as cgroup manager. Defaults to false.
+ `-n, --nodes=1`:
~ The number of nodes to spin up. Defaults to 1.
## command line
```shell=
minikube status
minikube delete --all --purge
minikube addons list
minikube dashboard
eval $(minikube -p minikube docker-env)
```
+ <kbd>minikube tunnel</kbd>: Connect to LoadBalancer services
```shell=
$ minikube profile list
|----------|-----------|---------|---------------|------|---------|---------|-------|--------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active |
|----------|-----------|---------|---------------|------|---------|---------|-------|--------|
| minikube | hyperkit | docker | 192.168.64.16 | 8443 | v1.26.3 | Running | 1 | * |
|----------|-----------|---------|---------------|------|---------|---------|-------|--------|
```
## Enable the Nginx Ingress controller
```shell=
minikube addons enable ingress
```
```shell=
kubectl get pods -n ingress-nginx
```
The output is similar to:
```
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-wnngw 0/1 Completed 0 62m
ingress-nginx-admission-patch-cw92v 0/1 Completed 1 62m
ingress-nginx-controller-5959f988fd-dfn46 1/1 Running 0 62m
```
## Enable metrics-server
```shell=
$ minikube addons enable metrics-server
$ kubectl top node --sort-by='cpu'
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
controlplane 301m 0% 1283Mi 0%
node01 29m 0% 371Mi 0%
$ kubectl top pod -n ${namespace}
NAME CPU(cores) MEMORY(bytes)
elephant 20m 32Mi
```