Installazione ed uso di Minikube

Installare kubectl

Installazione in Linux

Scaricare e installare:

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s \
https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root:root /usr/local/bin/kubectl

Controllare:

kubectl version

Più leggibile:

kubectl version --output=yaml

Installare Minikube

Download del programma:

wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
sudo chown root:root /usr/local/bin/minikube

Test:

minikube version

Aggiusta automaticamente l’ambiente per accedere al cluster dalla shell.

Altri Requisiti Software

Sono necessari per qualche comando di Minikube.

Installare il pacchetto conntrack, che gestisce connessioni stateful:

sudo apt update
sudo apt install conntrack

Intallare il pacchetto cri-dockerd, che inerfaccia il server a dasso livello di Docker a Kubernetes:

wget https://github.com/Mirantis/cri-dockerd
chmod +x cri-dockerd
sudo mv ./cri-dockerd /usr/local/bin/cri-dockerd
sudo chown root:root /usr/local/bin/cri-dockerd

Lancio di Minikube

minikube start
😄  minikube v1.27.1 on Linuxmint 20.3
✨  Automatically selected the docker driver. Other choices: virtualbox, ssh, none
📌  Using Docker driver with root privileges
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.25.2 preload ...
    > preloaded-images-k8s-v18-v1...:  385.41 MiB / 385.41 MiB  100.00% 231.25 
    > gcr.io/k8s-minikube/kicbase:  387.11 MiB / 387.11 MiB  100.00% 228.11 KiB
    > gcr.io/k8s-minikube/kicbase:  0 B [_____________________] ?% ? p/s 14m32s

🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.25.2 on Docker 20.10.18 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

La prima volta può impiegare molto tempo, poichè scarica dalla rete delle immagini Docker.

Si può prescaricare l’immagine, e selezionarne una versione specifica:

docker pull gcr.io/k8s-minikube/kicbase:v0.0.35

Lanciare minikube con l’immagine scaricata:

minikube start --base-image='gcr.io/k8s-minikube/kicbase:v0.0.35'

Immagine docker dopo l’installazione:

docker images
REPOSITORY                                TAG       IMAGE ID       CREATED        SIZE
gcr.io/k8s-minikube/kicbase               v0.0.26   b0c9ec980b3d   8 days ago     1.08GB

Tutto minikube è in un’unica immagine molto grossa

Vedere la configurazione di kubectl:

kubectl config view

Informazioni sul cluster:

kubectl cluster-info
Kubernetes master is running at https://192.168.49.2:8443
KubeDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Nodi attivi:

kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   46m   v1.19.2

List dei pods:

kubectl get pod
No resources found in default namespace.

SSH alla shell minikube:

minikube ssh

Fermare Minikube

minikube stop
✋  Stopping node "minikube"  ...
🛑  Powering off "minikube" via SSH ...
🛑  1 node stopped.

minikube stop non cancella il container minikube

Rimuovere Minikube

Cancellare l’intero cluster:

minikube delete

N.B. Non farlo fino al termine di tutte le operazioni