steering-wheel

Kubernetes Tutorial – Der Beginn

In unserer neuen Artikel-Reihe wollen wir eine Anleitung zum Aufbau eines eigenen kleinen Kubernetes Clusters geben.

Was ist eigentlich Kubernetes?

Kubernetes ist eine Software zur automatisierten Bereitstellung, Skalierung und Verwaltung von Applikationen. Es basiert auf Containern, oft wird als Containerumgebung Docker genutzt. Container sind kleine virtuelle Systeme. Diese bringen nur die notwendigen Programme für eine bestimmte Applikation mit. Die einzelnen Container sind viel kleiner als eine komplette virtuelle Maschine. Außerdem können dieselben Container auf allen gängigen Plattformen eingesetzt werden. Dies ist insbesondere in der Entwicklung relevant. Der gleiche Container, der auf dem PC des Entwicklers läuft, wird genauso auf dem Produktivsystem laufen. Der Vorteil von Kubernetes gegenüber “normalen” Docker Umgebungen ist die Hochverfügbarkeit durch Cluster-Setups. Die Container werden automatisch auf die verfügbaren Knoten verteilt. So starten bei einem Hardware Ausfall alle Dienste auf einem anderen Teil des Clusters automatisch neu. Anwendungen können beispielsweise mithilfe von continuous delivery und continuous deployment (CI/CD) in Kubernetes ausgerollt, aktualisiert und getestet werden.

In dieser Artikelreihe verwenden wir Minikube als Kubernetes Cluster. Minikube eignet sich zum Testen, für erste Experimente mit Kubernetes oder zum Entwickeln von Containern. Für den Einsatz als Produktivsystem kommt es allerdings aus folgenden Gründen nicht in Frage:

  • Keine Ausfallsicherheit
  • Keine Updates möglich
  • Zugriff auf die Applikationsdaten nur kompliziert möglich
  • Beschränkte Möglichkeit Applikationen im Netzwerk zu veröffentlichen
  • Kritische Sicherheitsfunktionen sind nicht vorhanden

Falls Sie Interesse am Einsatz von Kubernetes in einem Produktivsystem haben, helfen wir Ihnen jedoch gerne persönlich weiter.

Aller Anfang ist (nicht) schwer

Um sich mit den Konzepten und der Funktionsweise von Kubernetes auseinanderzusetzen muss es nicht gleich ein Multi-Cluster Setup sein. Wir geben Ihnen in der folgenden Blogartikel-Reihe einen Einblick in die Welt von Kubernetes und die passenden Tools an die Hand um erste Erfahrungen mit Kubernetes zu sammeln. Die Artikelreihe richtet sich an Entwickler, “Kubernetes-Anfänger” und all diejenigen, die Interesse an Kubernetes haben.
Alle Beiträge beziehen sich auf Kubernetes Version 1.17.3. Kubernetes ist ein schnell wachsendes Projekt, welches im 3-Monats-Rhythmus neue Versionen veröffentlicht. Daher kann es in Zukunft zu Abweichungen zum aktuellen Release kommen.
Die offizielle Dokumentation für Kubernetes finden Sie hier.

Minikube

Minikube ist ein Kubernetes Cluster mit einem einzelnen Knoten, der in einer virtuellen Maschine lokal auf Ihrem PC läuft. Dabei sind die folgenden Kubernetes Features voll unterstützt:

  • DNS
  • NodePorts
  • ConfigMaps und Secrets
  • Dashboards
  • Container Runtime: Docker, CRI-O, und containerd
  • Persistent Volumes
  • Enabling CNI (Container Network Interface)

Um Minikube zu nutzen, benötigen wir zuerst kubectl, das Kommandozeilenwerkzeug zur Bedienung von Kubernetes. Dieses installieren wir unter Ubuntu wie folgt:


sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

Außerdem benötigen Sie eine Umgebung für virtuelle Maschinen, im Beispiel benutzen wir VirtualBox:


sudo apt-get install virtualbox

Anschließend können wir Minikube herunterladen und ausführbar machen:


curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube

Nachdem wir alle benötigten Vorarbeiten erledigt haben können wir den folgenden Befehl verwenden um den Cluster zu initialisieren:


./minikube start --vm-driver=virtualbox --kubernetes-version v1.17.3

Es sollte die folgende Ausgabe erscheinen:


? minikube v1.7.3 on Ubuntu 18.04
✨ Using the virtualbox driver based on user configuration
? Downloading VM boot image ...
> minikube-v1.7.3.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
> minikube-v1.7.3.iso: 167.39 MiB / 167.39 MiB [] 100.00% 10.34 MiB p/s 17s
? Creating virtualbox VM (CPUs=2, Memory=2000MB, Disk=20000MB) ...
? Preparing Kubernetes v1.17.3 on Docker 19.03.6 ...
? Downloading kubelet v1.17.3
? Downloading kubectl v1.17.3
? Downloading kubeadm v1.17.3
? Launching Kubernetes ...
? Enabling addons: default-storageclass, storage-provisioner
⌛ Waiting for cluster to come online ...
? Done! kubectl is now configured to use "minikube"

Arbeiten mit dem Cluster

Herzlichen Glückwunsch! Wir haben soeben unseren ersten Kubernetes Cluster installiert.
Das Dashboard des neu aufgesetzten Clusters öffne wir mit dem folgenden Befehl:


./minikube dashboard

Bei erfolgreichem Ausführen des Befehls erhalten Sie die folgende Ausgabe und ein Browserfenster öffnet sich:


?  Enabling dashboard ...
?  Verifying dashboard health ...
?  Launching proxy ...
?  Verifying proxy health ...
?  Opening http://127.0.0.1:46105/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

Am besten schauen Sie sich zuerst in Ruhe im Dashboard um. Am linken Rand finden Sie die verschiedenen Ressourcen die Kubernetes verwendet. Da im “default” Namespace noch keine Container gestartet sind, sollten Sie am besten zu “All Namespaces” wechseln.

Um sich die Ressourcen des Clusters anzuzeigen können wir außerdem auch kubectl verwenden. kubectl ist das offizielle Tool um Ressourcen in Kubernetes Clustern zu verwalten.
Um eine Übersicht über die Knoten, Pods und Services zu erhalten nutzen wir:


kubectl get nodes -o wide
kubectl get pods -o wide --all-namespaces
kubectl get services -o wide --all-namespaces

Der Parameter -o wide gibt hierbei zusätzliche Informationen aus, –all-namespaces gibt die Ressourcen aller Namespaces aus. Statt –all-namespaces kann auch -A genutzt werden.

Fazit und Ausblick

Wir haben soeben unseren ersten Kubernetes Cluster installiert und uns einen Überblick über die einzelnen Ressourcen verschafft. Dazu haben wir das offizielle Dashboard verwendet, sowie das Kommandozeilenwerkzeug kubectl.

In den folgenden Artikeln wird es um die einzelnen Ressourcen, das Zusammenspiel zwischen diesen und das erste Deployment einer Applikation gehen.

Wenn Sie Interesse an unserem Kubernetes Cluster Angebot haben finden Sie auf unserer Website weitere Informationen.