Kubernetes met Minikube te installeren op Ubuntu 20.04

Minikube is een open-source gereedschap dat je helpt om een single-node Kubernetes cluster op je lokale machine op te zetten. Het maakt het gemakkelijk om een single-node Kubernetes cluster op je persoonlijke computer te draaien voor dagelijks ontwikkelingswerk. Het is cross-platform en kan geïnstalleerd worden op macOS, Linux, en Windows.

In deze zelfstudie laten we je zien hoe je Minikube op Ubuntu 20.04 server installeert.

Vereisten

  • Ubuntu 20.04 desktop geïnstalleerd in je systeem.
  • Minimaal 4 GB RAM en 2 of meer CPU kernen.
  • Hardware virtualisatie moet ingeschakeld zijn in je lokale systeem.
  • Een root wachtwoord is geconfigureerd de server.

Aan de slag

Alvorens te beginnen is het aan te raden je systeempakketten bij te werken tot de laatste versie. Je kunt ze bijwerken door het volgende commando uit te voeren:

apt-get update -y

Als alle pakketten zijn bijgewerkt, installeer je andere afhankelijkheden door het volgende commando uit te voeren:

apt-get install curl wget apt-transport-https virtualbox virtualbox-ext-pack -y

Als je klaar bent, kun je doorgaan naar de volgende stap.

Docker installeren

Vervolgens moet je Docker op je systeem installeren. Je kunt het installeren door het volgende commando uit te voeren:

apt-get install docker.io -y

Als de Docker geïnstalleerd is, start je de Docker service en schakel je hem in om te starten bij het herstarten van het systeem:

systemctl start docker
systemctl enable docker

Je kunt nu de Docker versie verifiëren met het volgende commando:

docker --version

Je zou de Docker versie moeten zien in de volgende uitvoer:

Docker version 19.03.8, build afacb8b7f0

Als je klaar bent, kun je doorgaan naar de volgende stap.

Installeer Minikube

Minikube is standaard niet beschikbaar in de Ubuntu standaard repository. Je zult dus het Minikube binaire pakket moeten downloaden van zijn officiële website. Je kunt het downloaden met het volgende commando:

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

Als de download voltooid is, kopieer je de gedownloade binary naar het systeempad met het volgende commando:

cp minikube-linux-amd64 /usr/local/bin/minikube

Geef vervolgens uitvoeringstoestemming met het volgende commando:

chmod 755 /usr/local/bin/minikube

Je kunt nu de Minikube versie verifiëren met het volgende commando:

minikube version

Je zou de volgende uitvoer moeten krijgen:

minikube version: v1.16.0
commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Kubectl

Vervolgens moet je Kubectl installeren en andere gereedschappen om applicaties op Kubernetes te beheren. Voeg eerst de GPG sleutel toe met het volgende commando:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Voeg vervolgens de kubectl repository toe met het volgende commando:

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list

Als de repository is toegevoegd, werk je de repository cache bij en installeer je Kubectl door het volgende commando uit te voeren:

apt-get update -y
apt-get install kubectl kubeadm kubectl -y

Als alle pakketten geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Start Minikube

Op dit punt zijn alle vereiste pakketten geïnstalleerd. Je kunt nu Minikube starten met het volgende commando:

minikube start

Je zou de volgende uitvoer moeten krijgen:

* minikube v1.16.0 on Ubuntu 20.04 (kvm/amd64)
* Using the none driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=2, Memory=3936MB, Disk=100726MB) ...
* OS release is Ubuntu 20.04 LTS
* Preparing Kubernetes v1.20.0 on Docker 19.03.8 ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 37.40 MiB / 37.40 MiB [---------------] 100.00% 27.29 MiB p/s 1s
    > kubectl: 38.37 MiB / 38.37 MiB [---------------] 100.00% 27.60 MiB p/s 1s
    > kubelet: 108.69 MiB / 108.69 MiB [-------------] 100.00% 42.08 MiB p/s 3s
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring local host environment ...
* 
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
* 
  - sudo mv /root/.kube /root/.minikube $HOME
  - sudo chown -R $USER $HOME/.kube $HOME/.minikube
* 
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
* Enabled addons: storage-provisioner, default-storageclass
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Je kunt de cluster informatie controleren met het volgende commando:

kubectl cluster-info

Je zou de volgende uitvoer moeten krijgen:

Kubernetes control plane is running at https://45.58.38.77:8443
KubeDNS is running at https://45.58.38.77:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Je kunt de Kubectl standaard configuratie controleren met het volgende commando:

kubectl config view

Je zou de volgende uitvoer moeten zien:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    server: https://45.58.38.77:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /root/.minikube/profiles/minikube/client.crt
    client-key: /root/.minikube/profiles/minikube/client.key

Je kunt alle draaiende nodes controleren met het volgende commando:

kubectl get nodes

Je zou de volgende uitvoer moeten krijgen:

NAME         STATUS   ROLES                  AGE     VERSION
ubuntu2004   Ready    control-plane,master   2m24s   v1.20.0

Om de status van Minikube te controleren, voer je het volgende commando uit:

minikube status

Je zou de volgende uitvoer moeten krijgen:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent

Als je klaar bent, kun je doorgaan naar de volgende stap.

Toegang tot Kubernetes Dashboard

Minikube wordt geleverd met een heleboel addons die je naar eigen behoefte kunt in- of uitschakelen. Je kunt alle addons opnoemen met het volgende commando:

minikube addons list

Je zou de volgende uitvoer moeten krijgen:

|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled     |
| csi-hostpath-driver         | minikube | disabled     |
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ?   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gcp-auth                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| kubevirt                    | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| olm                         | minikube | disabled     |
| pod-security-policy         | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ?   |
| storage-provisioner-gluster | minikube | disabled     |
| volumesnapshots             | minikube | disabled     |
|-----------------------------|----------|--------------|

Maak vervolgens een lijst van alle container image die in het cluster draaien met het volgende commando:

kubectl get pods --all-namespaces

Je zou de volgende uitvoer moeten krijgen:

NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-74ff55c5b-skf9d              1/1     Running   0          3m45s
kube-system   etcd-ubuntu2004                      1/1     Running   0          3m54s
kube-system   kube-apiserver-ubuntu2004            1/1     Running   0          3m54s
kube-system   kube-controller-manager-ubuntu2004   1/1     Running   0          3m54s
kube-system   kube-proxy-w8q6d                     1/1     Running   0          3m45s
kube-system   kube-scheduler-ubuntu2004            1/1     Running   0          3m54s
kube-system   storage-provisioner                  1/1     Running   0          3m59s

Schakel vervolgens het Kubernetes dashboard in en krijg de URL van het dashboard met het volgende commando:

minikube dashboard --url

Je zou de volgende uitvoer moeten krijgen:

* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

You can now access and manage the Kubernetes cluster using the URL http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Conclusie

In de bovenstaande gids heb je geleerd hoe je Minikube installeert en gebruikt om een Kubernetes cluster op te zetten op Ubuntu 20.04. Je kunt nu Minikube gebruiken om Kubernetes cluster lokaal op te zetten en het vanuit de webbrowser te beheren. Voel je vrij om me te vragen als je vragen hebt.