Wie man einen Kubernetes Cluster mit Minicube unter Debian 11 einrichtet

Minikube ist ein kostenloses und quelloffenes Tool, das mit einer Reihe von eingebauten Add-ons ausgestattet ist und dir hilft, einen Kubernetes-Cluster in deinem lokalen System einzurichten. Der Befehl „minicube“ bietet mehrere Unterbefehle, mit denen du den Kubernetes-Cluster über die Befehlszeilenschnittstelle verwalten kannst. Minikube ist plattformübergreifend und unterstützt viele Betriebssysteme, darunter Linux, macOS und Windows. Es kann als VM, Container oder auf Bare Metal eingesetzt werden.

In dieser Anleitung lernst du, wie du Minikube auf Debian 11 installierst.

Voraussetzungen

  • Ein frisches Debian 11 ist auf deinem System installiert.
  • Ein Root-Passwort ist auf deinem System eingerichtet.

Docker installieren

Bevor du Minikube installierst, muss das Docker-Paket auf deinem Server installiert sein. Wenn es nicht installiert ist, kannst du es mit dem folgenden Befehl installieren.

apt install docker.io -y

Nach der Installation von Docker kannst du die Docker-Version mit dem folgenden Befehl überprüfen.

docker --version

Du solltest die folgende Ausgabe sehen.

Docker version 20.10.5+dfsg1, build 55c4c88

Kubectl installieren

Kubectl ist ein Tool zur Bereitstellung und Verwaltung von Anwendungen in Kubernetes. Standardmäßig ist Kubectl nicht im Standard-Repository von Debian 11 verfügbar. Daher musst du es mit Snap installieren.

Installiere zunächst das Snap-Paket mit dem folgenden Befehl.

apt install snapd -y

Anschließend erstellst du mit dem folgenden Befehl einen symbolischen Link für das Snap-Paket.

ln -s /var/lib/snapd/snap /snap

Als nächstes fügst du einen Snap-Pfad zu deinem Systemprofil hinzu.

echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | tee -a /etc/profile.d/snap.sh

Starte und aktiviere den Snap-Dienst mit dem folgenden Befehl.

systemctl enable --now snapd.service snapd.socket

Als Nächstes installierst du das Paket kubectl mit dem folgenden Befehl.

snap install kubectl --classic

Als Nächstes erstellst du mit dem folgenden Befehl einen symbolischen Link auf das Paket kubectl.

ln -s /snap/kubectl/current/kubectl /usr/bin/

Überprüfe die kubectl-Version mit dem folgenden Befehl.

kubectl version -o yaml

Du solltest die folgende Ausgabe sehen:

clientVersion:
  buildDate: "2022-12-09T16:23:44Z"
  compiler: gc
  gitCommit: b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d
  gitTreeState: clean
  gitVersion: v1.26.0
  goVersion: go1.19.4
  major: "1"
  minor: "26"
  platform: linux/amd64
kustomizeVersion: v4.5.7

Minikube installieren

Standardmäßig ist das Minikube-Paket nicht im Debian-Standard-Repository enthalten. Daher musst du das Minikube-Binary auf dein System herunterladen.

Lade Minikube zunächst mit dem folgenden Befehl herunter.

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

Kopiere dann das Minikube-Binary in den Systempfad.

cp minikube /usr/local/bin/

Setze die Ausführungserlaubnis mit dem folgenden Befehl.

chmod +x /usr/local/bin/minikube

Überprüfe nun die Minikube-Version mit dem folgenden Befehl.

minikube version

Du wirst die folgende Ausgabe erhalten.

minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Minikube starten

Jetzt sind alle erforderlichen Pakete installiert. Du kannst Minikube nun mit dem folgenden Befehl starten:

minikube start --force

Dadurch wird das Docker-Image heruntergeladen und der Kubernetes-Cluster wie unten gezeigt konfiguriert:

????  minikube v1.28.0 on Debian 11.6 (kvm/amd64)
?  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
?  Automatically selected the docker driver. Other choices: none, ssh
????  The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
????  If you are running minikube within a VM, consider using --driver=none:
????    https://minikube.sigs.k8s.io/docs/reference/drivers/none/
????  Using Docker driver with root privileges
????  Starting control plane node minikube in cluster minikube
????  Pulling base image ...
????  Downloading Kubernetes v1.25.3 preload ...
    > preloaded-images-k8s-v18-v1...:  385.44 MiB / 385.44 MiB  100.00% 37.08 M
    > gcr.io/k8s-minikube/kicbase:  386.27 MiB / 386.27 MiB  100.00% 27.51 MiB 
    > gcr.io/k8s-minikube/kicbase:  0 B [________________________] ?% ? p/s 10s
????  Creating docker container (CPUs=2, Memory=2200MB) ...
????  Preparing Kubernetes v1.25.3 on Docker 20.10.20 ...
    ? 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

Du kannst nun den Cluster-Status mit dem folgenden Befehl überprüfen:

kubectl cluster-info

Du solltest die folgende Ausgabe sehen:

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

Um die laufenden Knoten zu überprüfen, führe den folgenden Befehl aus:

kubectl get nodes

Ausgabe:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   67s   v1.25.3

Du kannst auch mit dem folgenden Befehl auf den Minikube-Container zugreifen:

minikube ssh

Ausgabe:

docker@minikube:~$ 

Verlasse nun die Container-Shell mit folgendem Befehl:

$exit

Mit dem folgenden Befehl kannst du den Kubernetes-Cluster jederzeit anhalten und löschen:

minikube stop
minikube delete

Du kannst den Status von Minikube mit dem folgenden Befehl überprüfen:

minikube status

Ausgabe:

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

Sobald du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugang zum Minikube Kubernetes Dashboard

Standardmäßig stellt Minikube ein Web-Dashboard zur Verfügung, das du zur Verwaltung deines Clusters nutzen kannst.

Mit dem folgenden Befehl kannst du alle Minikube-Addons auflisten:

minikube addons list

Du solltest die folgende Ausgabe sehen:

|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | disabled     | Kubernetes                     |
| default-storageclass        | minikube | enabled ?   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ?   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

Als Nächstes kannst du mit dem folgenden Befehl alle Container-Images auflisten, die im Cluster laufen:

kubectl get pods --all-namespaces

Du solltest die folgende Ausgabe sehen:

NAMESPACE     NAME                               READY   STATUS    RESTARTS        AGE
kube-system   coredns-565d847f94-9ttdq           1/1     Running   0               2m47s
kube-system   etcd-minikube                      1/1     Running   0               3m
kube-system   kube-apiserver-minikube            1/1     Running   0               3m1s
kube-system   kube-controller-manager-minikube   1/1     Running   0               3m
kube-system   kube-proxy-mr8sn                   1/1     Running   0               2m47s
kube-system   kube-scheduler-minikube            1/1     Running   0               3m
kube-system   storage-provisioner                1/1     Running   1 (2m16s ago)   2m59s

Führe nun den folgenden Befehl aus, um die URL des Kubernetes-Dashboards zu erhalten:

minikube dashboard --url

Du solltest die folgende Ausgabe sehen:

????  Enabling dashboard ...
    ? Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
    ? Using image docker.io/kubernetesui/dashboard:v2.7.0
????  Some dashboard features require the metrics-server addon. To enable all features please run:

	minikube addons enable metrics-server	


????  Verifying dashboard health ...
????  Launching proxy ...
????  Verifying proxy health ...
http://127.0.0.1:45627/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Zu diesem Zeitpunkt ist das Minikube-Dashboard installiert und läuft auf localhost an Port 45627. Du kannst jedoch nur von deinem lokalen Rechner aus darauf zugreifen. Wenn du von einem externen Rechner darauf zugreifen möchtest, führe folgenden Befehl aus.

kubectl proxy --address='0.0.0.0' --disable-filter=true

Öffne nun deinen Webbrowser und gib die URL http://your-server-ip:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ein. Du wirst auf das Kubernetes-Dashboard weitergeleitet, wie auf der folgenden Seite zu sehen ist:

Kubernetes Minicube

Glückwunsch! Du hast Minikube erfolgreich auf Debian 11 installiert. Jetzt kannst du deinen Kubernetes-Cluster ganz einfach über deinen Webbrowser verwalten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …