Zugriff auf den Cluster

KubernetesBeginner
Jetzt üben

Einführung

Kubernetes ist ein System zur Orchestrierung von Containern. Es verwaltet, wie containerisierte Anwendungen in einem Cluster eingeplant, ausgeführt, zugänglich gemacht und wiederhergestellt werden.

Für die Interaktion mit einem Kubernetes-Cluster verwenden Sie normalerweise kubectl. Bevor Sie Anwendungen bereitstellen, benötigen Sie einen laufenden Cluster und eine funktionierende Client-Konfiguration, die korrekt auf diesen Cluster verweist.

In diesem Lab führen Sie die grundlegenden Schritte zum Einrichten Ihres Zugriffs auf einen Kubernetes-Cluster durch. Sie verwenden Minikube, ein Tool, das lokal einen Kubernetes-Cluster mit einem einzigen Node ausführt. Das eignet sich besonders gut zum Lernen und für die Entwicklung.

Sie lernen:

  1. Einen lokalen Kubernetes-Cluster zu starten.
  2. Den kubectl-Kontext zu überprüfen, um sicherzustellen, dass Sie den richtigen Cluster ansprechen.
  3. Wichtige Clusterinformationen abzurufen.
  4. Die Nodes im Cluster aufzulisten, um ihren Status zu überprüfen.

Cluster starten

In diesem Schritt starten Sie mit Minikube einen lokalen Kubernetes-Cluster. Minikube erstellt auf Ihrem lokalen Rechner eine virtuelle Maschine oder einen Container und stellt darin einen einfachen Cluster bereit. So können Sie Kubernetes-Befehle üben, ohne einen Cloud-Anbieter zu benötigen.

An dieser Stelle ist es hilfreich, drei Begriffe klar zu unterscheiden. Ein Cluster ist die gesamte Kubernetes-Umgebung. Ein Node ist eine Maschine innerhalb dieses Clusters. Die Control Plane ist der Teil, der API-Anfragen entgegennimmt und entscheidet, was geschehen soll. Minikube bündelt diese Komponenten in einer lokalen Lernumgebung. So können Sie sich zunächst auf die Kubernetes-Konzepte konzentrieren, bevor Sie sich mit Cloud-Infrastruktur beschäftigen.

Stellen Sie zunächst sicher, dass Sie sich im Projektverzeichnis befinden:

cd ~/project

Starten Sie nun den Minikube-Cluster. Sie geben den docker-Treiber an, damit der Cluster in einem Docker-Container ausgeführt wird. Dieser Treiber ist mit der Umgebung dieses Labs kompatibel.

minikube start --driver=docker

Dieser Vorgang kann einige Minuten dauern, da Minikube die erforderlichen Kubernetes-Images herunterlädt und die Control Plane startet. In der Ausgabe sehen Sie, dass Minikube Images abruft, den Container startet und den Cluster konfiguriert.

Sobald der Befehl abgeschlossen ist, prüfen Sie den Status von Minikube, um sicherzustellen, dass der Cluster ordnungsgemäß läuft:

minikube status

Die Ausgabe sollte anzeigen, dass host, kubelet und apiserver den Status "Running" haben.

Kontext überprüfen

In diesem Schritt überprüfen Sie, ob das Kommandozeilentool kubectl für die Kommunikation mit Ihrem neuen Minikube-Cluster konfiguriert ist.

Kubernetes verwendet eine Konfigurationsdatei, die normalerweise unter ~/.kube/config liegt, um Informationen für den Clusterzugriff zu speichern. Diese Datei kann Angaben zu mehreren Clustern enthalten. Der „Kontext“ legt fest, an welchen Cluster kubectl Befehle sendet. Als Sie im vorherigen Schritt Minikube gestartet haben, wurde Ihre Konfiguration automatisch aktualisiert und der Kontext auf minikube gesetzt.

Dieses Konzept ist wichtig, weil kubectl nur ein Client ist. Der Client „enthält“ den Cluster nicht. Er liest Verbindungsdaten, Zertifikate und den aktuell ausgewählten Kontext und sendet anschließend Anfragen an den Kubernetes-API-Server. In der Praxis wechseln Entwickler und Administratoren häufig zwischen Entwicklungs-, Staging- und Produktionsclustern. Deshalb gehört die Überprüfung des aktuellen Kontexts zur sicheren Arbeitsweise und ist keine reine Formalität.

Überprüfen Sie den aktuellen Kontext mit folgendem Befehl:

kubectl config current-context

Die Ausgabe sollte folgendermaßen aussehen:

minikube

Wenn Sie die vollständigen Konfigurationsdetails einschließlich der Server-URL des Clusters und der Benutzerzertifikate anzeigen möchten, können Sie die Konfiguration ausgeben. Sensible Werte werden dabei sicher ausgeblendet:

kubectl config view

Damit ist bestätigt, dass alle nachfolgenden kubectl-Befehle gegen Ihren lokalen Minikube-Cluster ausgeführt werden.

Clusterinformationen prüfen

In diesem Schritt rufen Sie grundlegende Informationen zum Cluster ab. Dadurch überprüfen Sie die Verbindung und sehen, wo die Kubernetes-Control-Plane ausgeführt wird.

Der Befehl cluster-info bietet eine einfache Möglichkeit zu prüfen, ob kubectl erfolgreich mit dem API-Server kommunizieren kann.

Kubernetes ist ein API-gesteuertes System. Fast jede Aktion – vom Erstellen eines Pods bis zum Skalieren eines Deployments – wird zu einer API-Anfrage an die Control Plane. Deshalb gehört die Frage „Kann mein Client den API-Server erreichen?“ zu den ersten Prüfungen bei der Untersuchung eines Clusters.

Führen Sie folgenden Befehl aus:

kubectl cluster-info

Die Ausgabe sollte ähnlich wie diese aussehen:

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

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

Die IP-Adressen und Ports können abweichen. Entscheidend ist die Meldung „Kubernetes control plane is running“. Sie bestätigt, dass Ihr Client (kubectl) erfolgreich mit dem Server, also dem Cluster, verbunden ist.

Nodes auflisten

In diesem Schritt prüfen Sie die Nodes in Ihrem Cluster. Ein Node ist eine virtuelle oder physische Arbeitsmaschine in Kubernetes. Da Sie Minikube verwenden, erwarten Sie einen einzigen Node, der sowohl als Control Plane als auch als Worker fungiert.

In größeren Clustern sind diese Rollen häufig getrennt. Nodes der Control Plane konzentrieren sich auf die Orchestrierung, während Worker-Nodes die Anwendungs-Workloads ausführen. Minikube fasst beide Rollen in einem Node zusammen, um die Lernumgebung einfach zu halten. Die Befehlsausgabe führt jedoch in dieselben Konzepte ein, die Sie auch in Produktionsumgebungen finden.

Listen Sie alle Nodes im Cluster mit dem Befehl get nodes auf:

kubectl get nodes

Die Ausgabe sollte ähnlich wie folgt aussehen:

NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   5m20s   v1.26.1

Die Spalten bedeuten:

  • NAME: Der Name des Nodes, hier minikube.
  • STATUS: Der Status sollte Ready lauten. Das bedeutet, dass der Node fehlerfrei und bereit ist, Workloads anzunehmen.
  • ROLES: Die Rolle des Nodes, zum Beispiel control-plane.
  • AGE: Gibt an, wie lange der Node bereits läuft.
  • VERSION: Die auf dem Node installierte Kubernetes-Version.

Wenn der Status NotReady lautet, startet der Node normalerweise noch oder es liegt ein Netzwerkproblem vor. Da der Status bei Ihnen Ready ist, ist Ihr Cluster vollständig betriebsbereit.

Zusammenfassung

In diesem Lab haben Sie Ihre Umgebung erfolgreich für den Zugriff auf einen Kubernetes-Cluster konfiguriert. Sie haben:

  1. Mit Minikube einen lokalen Kubernetes-Cluster gestartet.
  2. Überprüft, dass der kubectl-Kontext korrekt auf den lokalen Cluster eingestellt ist.
  3. Clusterinformationen abgerufen, um die Verbindung mit dem API-Server zu bestätigen.
  4. Die Nodes aufgelistet, um sicherzustellen, dass die Cluster-Infrastruktur bereit und fehlerfrei ist.

Diese grundlegenden Schritte sind erforderlich, bevor Sie Anwendungen in Kubernetes bereitstellen. Sie verfügen nun über eine funktionierende lokale Umgebung, mit der Sie Ihre Kubernetes-Lernreise fortsetzen können.