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> ![](https://i.imgur.com/FMLFMrS.png) #### 「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 ```