Kapitel 1. Erste Schritte mit Kubernetes
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
In diesem ersten Kapitel stellen wir Rezepte vor, die dir den Einstieg in Kubernetes erleichtern. Wir zeigen dir, wie du Kubernetes nutzen kannst, ohne es zu installieren, und stellen dir Komponenten wie die Befehlszeilenschnittstelle (CLI) und das Dashboard vor, mit denen du mit einem Cluster interagieren kannst, sowie Minikube, eine All-in-One-Lösung, die du auf deinem Laptop ausführen kannst.
1.1 Installation der Kubernetes CLI, kubectl
Lösung
Die einfachste Möglichkeit ist, die letzte offizielle Version herunterzuladen. Um zum Beispiel auf einem Linux-System die neueste stabile Version zu erhalten, gibst du Folgendes ein:
$ wget https://dl.k8s.io/release/$(wget -qO - https://dl.k8s.io/release/ stable.txt)/bin/linux/amd64/kubectl $ sudo install -m 755 kubectl /usr/local/bin/kubectl
Über den Homebrew-Paketmanager können Linux- und macOS-Nutzer auch kubectl
installieren:
$ brew install kubectl
Vergewissere dich nach der Installation von , dass du eine funktionierende kubectl
hast, indem du ihre Version auflistest:
$ kubectl version --client Client Version: v1.28.0 Kustomize Version: v5.0.4-0.20230...
Diskussion
kubectl
ist das offizielle Kubernetes CLI und steht als Open Source Software zur Verfügung. Das bedeutet, dass du die Binärdatei kubectl
bei Bedarf selbst erstellen kannst. In Rezept 15.1 erfährst du, wie du den Kubernetes-Quellcode lokal kompilierst.
Es ist nützlich zu wissen, dass Nutzer der Google Kubernetes Engine (siehe Rezept 2.11) kubectl
mit gcloud
installieren können:
$ gcloud components install kubectl
Beachte auch, dass du in den neuesten Versionen von Minikube (siehe Rezept 1.2) kubectl
als Unterbefehl von minikube
aufrufen kannst, um eine kubectl
Binärdatei auszuführen, die der Clusterversion entspricht:
$ minikube kubectl -- version --client Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.4", ...} Kustomize Version: v5.0.1
Siehe auch
-
Dokumentation zur Installation
kubectl
1.2 Installation von Minikube zum Betrieb einer lokalenKubernetes-Instanz
Lösung
Minikube ist ein Tool, mit dem du Kubernetes ganz einfach auf deinem lokalen Rechner nutzen kannst.
Um das Minikube CLI lokal zu installieren, kannst du dir die neueste Vorabversion besorgen oder aus den Quellen bauen. Um die neueste Version von minikube
auf einem Linux-basierten Rechner zu installieren,gehe folgendermaßen vor:
$ wget https://storage.googleapis.com/minikube/releases/latest/ minikube-linux-amd64 -O minikube $ sudo install -m 755 minikube /usr/local/bin/minikube
Dadurch wird die Binärdatei minikube
in deinem Pfad abgelegt und vonüberall aus zugänglich gemacht.
Sobald es installiert ist, kannst du die Minikube-Version mit dem folgenden Befehl überprüfen:
$ minikube version minikube version: v1.31.2 commit: fd7ecd...
Diskussion
Minikube kann als virtuelle Maschine, als Container oder als Bare Metal eingesetzt werden. Dies wird mit dem --driver
Flag bei der Erstellung eines Clusters auf Minikube konfiguriert. Wenn dieses Flag nicht angegeben wird, wählt Minikube automatisch die beste verfügbare Laufzeitumgebung.
Ein Hypervisor ist eine Software- oder Hardwarekomponente, die virtuelle Maschinen erstellt und verwaltet. Er ist für die Zuweisung und Verwaltung der physischen Ressourcen (CPU, Speicher, Speicherung, Netzwerk) eines Hostsystems verantwortlich und ermöglicht es, dass mehrere virtuelle Maschinen (VMs) gleichzeitig auf derselben physischen Hardware laufen. Minikube unterstützt eine Reihe von Hypervisoren wie VirtualBox, Hyperkit, Docker Desktop, Hyper-V und so weiter. Die Treiberseite gibt einen Überblick über die unterstützten Runtimes.
Minikube kann auch eine Container-Runtime verwenden, um einen Cluster auf einem Host-Rechner zu erstellen. Dieser Treiber ist nur auf einem Linux-basierten Host verfügbar, auf dem es möglich ist, Linux-Container nativ auszuführen, ohne eine virtuelle Maschine zu verwenden. Eine Container-basierte Laufzeitumgebung bietet zwar nicht den gleichen Grad an Isolation wie eine virtuelle Maschine, dafür aber die beste Leistung und Ressourcennutzung. Zum Zeitpunkt der Erstellung dieses Artikels unterstützt Minikube die Docker Engine und Podman (experimentell).
Weitere Tools, die für den Betrieb von lokalen Kubernetes-Clustern mit Linux-Containern verwendet werden können, sind unter zu finden:
-
Kubernetes in Docker Desktop (siehe Rezept 1.6)
-
Art (siehe Rezept 1.5)
Siehe auch
-
minikube
Quelle auf GitHub
1.3 Minikube lokal für die Entwicklung nutzen
Problem
Du möchtest Minikube lokal zum Testen und Entwickeln deiner Kubernetes-Anwendung verwenden. Du hast minikube
installiert und gestartet (siehe Rezept 1.2) und möchtest ein paar zusätzliche Befehle kennen, um deine Entwicklung zu vereinfachen.
Lösung
Verwende den Befehl minikube start
, um lokal einen Kubernetes-Cluster zu erstellen:
$ minikube start
Standardmäßig werden dem Cluster 2 GB RAM zugewiesen. Wenn dir die Standardeinstellungen nicht gefallen, kannst du Parameter wie den Arbeitsspeicher und die Anzahl der CPUs überschreiben und eine bestimmte Kubernetes-Version für die Minikube-VM auswählen:
$ minikube start --cpus=4 --memory=4096 --kubernetes-version=v1.27.0
Außerdem kannst du die Anzahl der Clusterknoten festlegen, indem du den Standardwert von einem Knoten überschreibst:
$ minikube start --cpus=2 --memory=4096 --nodes=2
Um den Status des Minikube-Clusters zu überprüfen, gehe folgendermaßen vor:
$ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured minikube-m02 type: Worker host: Running kubelet: Running
Um den Status des Kubernetes-Clusters in Minikube zu überprüfen,musst duFolgendes tun:
$ kubectl cluster-info Kubernetes control plane is running at https://192.168.64.72:8443 CoreDNS is running at https://192.168.64.72:8443/api/v1/namespaces/ kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Der mit Minikube erstellte Kubernetes-Cluster nutzt die Ressourcen des Host-Rechners. Du musst also sicherstellen, dass dein Host über die nötigen Ressourcen verfügt. Und noch wichtiger: Wenn du fertig bist, vergiss nicht, ihn mit minikube stop
zu stoppen, um die Systemressourcen freizugeben.
Diskussion
Die Minikube CLI bietet Befehle, die dir das Leben leichter machen. Die CLI hat eine eingebaute Hilfe, mit der du die Unterbefehle selbst entdecken kannst - hier ist ein Ausschnitt:
$ minikube ... Basic Commands: start Starts a local Kubernetes cluster status Gets the status of a local Kubernetes cluster stop Stops a running local Kubernetes cluster delete Deletes a local Kubernetes cluster ... Configuration and Management Commands: addons Enable or disable a minikube addon ...
Neben den Befehlen start
, stop
und delete
solltest du dich mit den Befehlen ip
, ssh
, tunnel
, dashboard
und docker-env
vertraut machen.
Tipp
Wenn dein Minikube aus irgendeinem Grund instabil wird oder du neu anfangen willst, kannst du ihn mit minikube stop
und minikube delete
entfernen. Dann bekommst du mit minikube start
eine neue Installation.
1.4 Deine erste Anwendung auf Minikube starten
Problem
Du hast Minikube gestartet (siehe Rezept 1.3) und möchtest nun deine erste Anwendung auf Kubernetes starten.
Lösung
Du kannst zum Beispiel die Microblogging-Plattform Ghost auf Minikube mit zwei kubectl
Befehlen starten:
$ kubectl run ghost --image=ghost:5.59.4 --env="NODE_ENV=development" $ kubectl expose pod ghost --port=2368 --type=NodePort
Überwache den Pod manuell, um zu sehen, wann er anfängt zu laufen:
$ kubectl get pods NAME READY STATUS RESTARTS AGE ghost-8449997474-kn86m 1/1 Running 0 24s
Jetzt kannst du den Befehl minikube service
verwenden, um die URL des Anwendungsdienstes automatisch in den Webbrowser zu laden:
$ minikube service ghost
Diskussion
Der Befehl kubectl run
wird als Generator bezeichnet; er ist ein einfacher Befehl, um ein Pod
Objekt zu erstellen (siehe Rezept 4.4). Der Befehl kubectl expose
ist ebenfalls ein Generator, ein einfacher Befehl, um ein Service
Objekt (siehe Rezept 5.1) zu erstellen, das den Netzwerkverkehr zu den Containern leitet, die von deinem Einsatz gestartet werden.
Wenn du die Anwendung nicht mehr benötigst, kannst du die Pod
entfernen, um die Cluster-Ressourcen freizugeben:
$ kubectl delete pod ghost
Außerdem solltest du den Dienst ghost
löschen, der mit dem Befehl kubectl expose
erstellt wurde:
$ kubectl delete svc ghost
1.5 Mit kind Kubernetes lokal betreiben
Problem
kind ist eine alternative Möglichkeit, Kubernetes lokal auszuführen. Ursprünglich wurde es für das Testen von Kubernetes entwickelt, wird aber inzwischen auch oft genutzt, um Kubernetes-native Lösungen auf einem Laptop mit minimalem Aufwand zu testen. Du möchtest kind lokal zum Testen und Entwickeln deiner Kubernetes-Anwendung verwenden.
Lösung
Die Mindestanforderungen für die Verwendung von kind sind Go und eine Docker-Laufzeitumgebung. kind lässt sich einfach auf jeder Plattform installieren, zum Beispiel mit brew
:
$ brew install kind
Dann ist das Erstellen eines Clusters so einfach wie das Folgende:
$ kind create cluster
Genauso einfach ist es, sie zu löschen:
$ kind delete cluster
Diskussion
Da kind ursprünglich für das Testen von Kubernetes entwickelt wurde, ist eines seiner wichtigsten Designprinzipien, dass es sich gut für die Automatisierung eignet. Wenn du vorhast, Kubernetes-Cluster zu Testzwecken automatisch einzusetzen, solltest du kind in Betracht ziehen.
Siehe auch
-
Die offizielle Art Quick Start Guide
1.6 Kubernetes in Docker Desktop verwenden
Problem
Docker Desktop ist ein Angebot, das auf der Docker Engine aufbaut und eine Reihe nützlicher Entwicklertools bietet, darunter eine eingebaute Version von Kubernetes und einen zugehörigen Load Balancer, der den Datenverkehr in den Cluster leitet. Das bedeutet, dass du ein einziges Tool installieren kannst und Zugriff auf so ziemlich alles hast, was du brauchst, um lokal loszulegen. Du möchtest Docker Desktop lokal zum Testen und Entwickeln deiner Kubernetes-Anwendung verwenden.
Lösung
Installiere Docker Desktop und stelle sicher, dass du Kubernetes während des Installationsprozesses aktivierst.
Du kannst Kubernetes im Einstellungsfenster von Docker Desktop aktivieren und deaktivieren, wie in Abbildung 1-1 dargestellt. Das solltest du tun, wenn du Docker Desktop für die Docker-Engine, aber nicht für Kubernetes verwendest, da du so Ressourcen auf deinem Computer sparen kannst. Wie hier zu sehen ist, zeigt dir das Einstellungsfeld auch an, welche Version von Kubernetes von Docker Desktop bereitgestellt wird. Das kann bei der Fehlersuche nützlich sein, da bestimmte Lösungen Anforderungen an die minimale oder maximale Version von Kubernetes haben, mit der sie laufen können.
Es ist erwähnenswert, dass die in Docker Desktop eingebettete Version von Kubernetes ein paar Versionen hinter der neuesten Kubernetes-Version zurückbleibt, während Minikube in der Regel aktueller ist.
Wie in Abbildung 1-2 zu sehen ist, kannst du mit dem Menü der Docker-Desktop-Symbolleiste kubectl
ganz einfach zwischen verschiedenen lokalen Clustern umschalten. Das bedeutet, dass du Minikube und die Kubernetes von Docker Desktop gleichzeitig laufen lassen und zwischen ihnen wechseln kannst (was wir nicht empfehlen). Wie du das direkt von kubectl
aus machen kannst, erfährst du in Rezept 1.7.
Diskussion
Obwohl es eine schnelle und einfache Möglichkeit ist, mit Kubernetes zu beginnen, solltest du dir bewusst sein, dass Docker Desktop kein Open Source ist und dass die kostenlose Version nur von Einzelpersonen, kleinen Unternehmen, Studierenden und Lehrenden sowie nicht-kommerziellen Open-Source-Entwicklern genutzt werden kann.
Die Docker-Engine hingegen, mit der Minikube ausgeführt werden kann, steht unter einer Apache 2.0-Lizenz, ebenso wie Minikube selbst.
1.7 Umschalten von kubectl-Kontexten
Problem
kubectl
ist standardmäßig so konfiguriert, dass es mit einem bestimmten Kubernetes-Cluster spricht. Diese Konfiguration ist Teil des sogenannten Kontexts. Wenn du vergessen hast, auf welchen Cluster kubectl
eingestellt ist, zwischen Clustern wechseln oder andere kontextbezogene Parameter ändern möchtest, dann ist dieses Rezept genau das Richtige für dich.
Lösung
Um die für kubectl
verfügbaren Kontexte anzuzeigen, verwende den Befehl kubectl config get-contexts
:
$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE docker-desktop docker-desktop docker-desktop kind-kind kind-kind kind-kind * minikube minikube minikube default
Wie du der Ausgabe entnehmen kannst, sind in diesem Fall drei Kubernetes-Cluster auf kubectl
verfügbar, und der aktuelle Kontext ist so eingestellt, dass er mit dem Cluster minikube
spricht.
Um zum Cluster kind-kind
zu wechseln, führe folgenden Befehl aus:
$ kubectl config use-context kind-kind Switched to context "kind-kind".
Diskussion
Wenn du dein lokales kubectl
für den Zugriff auf einen entfernten Cluster verwenden möchtest, kannst du die Datei kubeconfig bearbeiten. Mehr über die kubeconfig-Datei erfährst du in der offiziellen Dokumentation.
1.8 Umschalten von Kontexten und Namensräumen mitkubectx und kubens
Lösung
kubectx
und kubens
sind zwei beliebte Open-Source-Skripte, die das Umschalten von Kontexten für kubectl
und das Umschalten von Namensräumen erleichtern, damit du nicht für jeden Befehl explizit den Namensraumnamen festlegen musst.
Es gibt eine Vielzahl von Installationsmöglichkeiten. Wenn du in der Lage bist, brew
zu benutzen, dann kannst du das hier versuchen:
$ brew install kubectx
Dann kannst du die verfügbaren kubectl
Kontexte einfach auflisten, etwa so:
$ kubectx docker-desktop kind-kind minikube
und den Kontext genauso einfach wechseln:
$ kubectx minikube Switched to context "minikube".
Mit kubens
kannst du auch ganz einfach Namensräume auflisten und wechseln:
$ kubens default kube-node-lease kube-public kube-system test
$ kubens test default Context "minikube" modified. Active namespace is "test".
Alle Befehle werden von da an im Kontext des gewählten Namensraums ausgeführt:
$ kubectl get pods default No resources found in test namespace.
Siehe auch
Get Kubernetes Kochbuch, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.