Zurück zum Blog

So installieren und verwenden Sie Kubernetes auf Ubuntu 20.04

So installieren und verwenden Sie Kubernetes auf Ubuntu 20.04

Einführung

Kubernetes ist ein Open-Source-Tool, das eine entscheidende Rolle bei der Container-Orchestrierung spielt. Kubernetes funktioniert durch die Orchestrierung und Verwaltung von Clustern in großem Maßstab über verschiedene Cloud-Umgebungen oder sogar On-Premise-Server hinweg. Ein Cluster ist eine Gruppe von Hosts, die für die Ausführung von containerisierten Anwendungen und Diensten gedacht sind. Ein Cluster benötigt mindestens zwei Nodes, um zu funktionieren – einen Master -Node und einen Worker -Node. Mit Blick auf die Skalierbarkeit haben Sie die Möglichkeit, das Cluster um so viele Worker-Nodes wie erforderlich zu erweitern.

Ein Node in Kubernetes bezieht sich auf einen Server. Ein Master-Node ist ein Server, der den Zustand des Clusters verwaltet. Worker-Nodes sind Server, auf denen die Workloads ausgeführt werden – dies sind in der Regel containerisierte Anwendungen und Dienste.

Diese Anleitung führt Sie durch die Schritte zur Installation und Bereitstellung eines Kubernetes-Clusters bestehend aus zwei Nodes auf Ubuntu 20.04. Wie bereits erwähnt, ist die Verwendung von zwei Nodes die grundlegendste Konfiguration bei der Arbeit mit Kubernetes. Sie haben auch die Möglichkeit, weitere Worker-Nodes hinzuzufügen, sobald Sie die Grundlagen verstanden haben. Wir werden Ihnen außerdem zeigen, wie Sie die beiden Server verbinden, damit der Master-Node den Worker-Node steuern kann.

Um unsere Konfiguration zu testen, werden wir einen Docker-Container, auf dem der Nginx-Webserver läuft, im Cluster bereitstellen. Dies ist eine typische Praxisanwendung von Kubernetes. Sie werden im weiteren Verlauf mehr über einige definierende Komponenten von Kubernetes wie kubectl und kubeadm erfahren. Es ist auch ratsam, sich zuerst mit unserem Tutorial zum Thema Kennenlernen der Grundlagen des Kubernetes-Toolkits vertraut zu machen, um sich mit den Grundlagen der Kubernetes-Plattform vertraut zu machen.

Jetzt legen wir los!

Voraussetzungen

Sie müssen zwei Server bereitstellen, die auf Ubuntu 20.04 laufen. Für die beste Leistung betragen die Mindestsystemanforderungen für Kubernetes 2 GB RAM und 2 CPUs. Sie können den Schritten 1 bis 4 dieser Schritt-für-Schritt-Anleitung zur Einrichtung Ihres Ubuntu-Servers auf CloudSigma folgen. Ein Server wird der Master-Node sein, der andere der Worker-Node. Wir haben unsere beiden Server passenderweise als kubernetes-master und kubernetes-worker benannt. Dies macht es einfacher, dem Tutorial zu folgen. Es steht Ihnen jedoch frei, die von Ihnen bevorzugten Hostnamen zu wählen.

  • Stellen Sie sicher, dass Sie auf beiden Nodes einen Benutzer mit sudo-Rechten hinzufügen, den wir zur Ausführung der Befehle wie im obigen Tutorial beschrieben verwenden werden. Folgen Sie dieser Anleitung zur Konfiguration der Linux-sudoers-Datei für entsprechende Anweisungen.

  • Netzwerkkonnektivität – die Server im Cluster sollten miteinander kommunizieren können. Wenn Sie Ihre VMs von CloudSigma bereitstellen, sind diese standardmäßig mit einer öffentlichen IP mit dem Internet verbunden. Wenn Sie in einem lokalen Netzwerk arbeiten, müssen Sie möglicherweise die Datei /etc/hosts auf jedem Server bearbeiten und sie entsprechend verknüpfen.

  • Sie müssen Docker auf jedem der Nodes installieren und aktivieren. Kubernetes ist auf eine Container-Runtime angewiesen, um Container in Pods auszuführen. Obwohl andere Container-Plattformen zur Auswahl stehen, werden wir in diesem Tutorial Docker verwenden. Docker stellt die von Ubuntu benötigte Laufzeitumgebung bereit. Sie können den Schritten 1, 2 und 3 unseres Tutorials zur Installation und Bedienung von Docker.

Schritt 1: Kubernetes installieren

In diesem Schritt werden wir Kubernetes installieren. Genau wie bei Docker in den Voraussetzungen müssen Sie die Befehle auf beiden Nodes ausführen, um Kubernetes zu installieren. Verwenden Sie ssh um sich auf beiden Nodes anzumelden und fortzufahren. Sie beginnen mit der Installation des apt-transport-https-Pakets, das die Arbeit mit http und https in den Repositories von Ubuntu ermöglicht. Installieren Sie außerdem curl, da dies für die nächsten Schritte erforderlich ist. Führen Sie den folgenden Befehl aus:

Fügen Sie dann den Kubernetes-Signierungs-schlüssel auf beiden Nodes hinzu, indem Sie folgenden Befehl ausführen:

Als Nächstes fügen wir das Kubernetes-Repository als Paketquelle auf beiden Nodes mit dem folgenden Befehl hinzu:

Aktualisieren Sie danach die Knoten:

  • Kubernetes-Tools installieren

Sobald das Update abgeschlossen ist, werden wir Kubernetes installieren. Dies beinhaltet die Installation der verschiedenen Tools, aus denen Kubernetes besteht: kubeadm, kubelet, kubectl, und kubernetes-cni. Diese Tools werden auf beiden Knoten installiert. Wir definieren jedes Tool unten:

  • kubelet – ein Agent, der auf jedem Knoten ausgeführt wird und die Kommunikation mit dem Master-Knoten übernimmt, um Workloads in der Container-Runtime zu initiieren. Geben Sie den folgenden Befehl ein, um kubelet zu installieren:

  • kubeadm – Teil des Kubernetes-Projekts und hilft bei der Initialisierung eines Kubernetes-Clusters. Geben Sie den folgenden Befehl ein, um kubeadm zu installieren:

  • kubectl – das Kubernetes-Befehlszeilentool, mit dem Sie Befehle innerhalb der Kubernetes-Cluster ausführen können. Führen Sie den folgenden Befehl aus, um kubectl zu installieren:

  • kubernetes-cni – ermöglicht die Vernetzung innerhalb der Container und stellt sicher, dass Container kommunizieren und Daten austauschen können. Führen Sie den folgenden Befehl aus, um es zu installieren:

Optional können Sie alle vier mit einem einzigen Befehl installieren:

Schritt 2: Deaktivieren des Swap-Speichers

Kubernetes funktioniert nicht in einem System, das Swap-Speicher verwendet. Daher muss er auf dem Master-Knoten und allen Worker-Knoten deaktiviert werden. Führen Sie den folgenden Befehl aus, um den Swap-Speicher zu deaktivieren:

Dieser Befehl deaktiviert den Swap-Speicher, bis das System neu gestartet wird. Wir müssen sicherstellen, dass er auch nach Neustarts deaktiviert bleibt. Dies muss auf dem Master- und allen Worker-Knoten durchgeführt werden. Wir können dies tun, indem wir die fstab-Datei bearbeiten und die /Swapfile-Zeile mit einem # auskommentieren. Öffnen Sie die Datei mit dem Texteditor nano, indem Sie den folgenden Befehl eingeben:

Kommentieren Sie in der Datei die Swapfile-Zeile aus, wie im folgenden Screenshot gezeigt:

install Kubernetes fstab swap disable

Wenn Sie die Swapfile-Zeile nicht sehen, ignorieren Sie sie einfach. Speichern und schließen Sie die Datei, wenn Sie mit der Bearbeitung fertig sind. Befolgen Sie den gleichen Vorgang für beide Knoten. Nun bleiben die Swap-Speichereinstellungen auch nach dem Neustart Ihres Servers deaktiviert.

Schritt 3: Festlegen eindeutiger Hostnamen

Ihre Knoten müssen eindeutige Hostnamen haben, um die Identifizierung zu erleichtern. Wenn Sie einen Cluster mit vielen Knoten bereitstellen, können Sie Namen zur Identifizierung Ihrer Worker-Knoten festlegen, z. B. node-1, node-2 usw. Wie bereits erwähnt, haben wir unsere Knoten wie folgt benannt: kubernetes-master und kubernetes-worker. Wir haben sie bei der Erstellung des Servers festgelegt. Sie können Ihre jedoch anpassen oder festlegen, falls Sie dies noch nicht über die Befehlszeile getan haben. Um den Hostnamen auf dem Master-Knoten anzupassen, führen Sie den folgenden Befehl aus:

Führen Sie auf dem Worker-Knoten den folgenden Befehl aus:

Sie können die aktuelle Terminal-Sitzung schließen und sich erneut per ssh auf dem Server anmelden, um die Änderungen zu sehen.

Schritt 4: Iptables den Bridged-Traffic sehen lassen

Damit die Master- und Worker-Knoten den Bridged-Traffic korrekt sehen können, sollten Sie sicherstellen, dass net.bridge.bridge-nf-call-iptables in Ihrer Konfiguration auf 1 gesetzt ist. Stellen Sie zunächst sicher, dass das Modul br_netfilter geladen ist. Sie können dies bestätigen, indem Sie folgenden Befehl eingeben:

Optional können Sie es explizit mit folgendem Befehl laden:

Jetzt können Sie diesen Befehl ausführen, um den Wert auf 1 zu setzen:

Schritt 5: Ändern des Docker-Cgroup-Treibers

Standardmäßig wird Docker mit cgroupfs als Cgroup-Treiber installiert. Kubernetes empfiehlt, dass Docker ausgeführt werden sollte mit systemd als Treiber. Wenn Sie diesen Schritt überspringen und versuchen, kubeadm im nächsten Schritt zu initialisieren, erhalten Sie die folgende Warnung in Ihrem Terminal:

Aktualisieren Sie sowohl auf dem Master- als auch auf den Worker-Nodes den cgroupdriver mit den folgenden Befehlen:

Führen Sie dann die folgenden Befehle aus, um Docker neu zu starten und beim Systemstart zu aktivieren:

Sobald das eingerichtet ist, können wir mit dem interessanten Teil fortfahren: dem Bereitstellen des Kubernetes-Clusters!

Schritt 6: Initialisieren des Kubernetes-Master-Nodes

Der erste Schritt beim Bereitstellen eines Kubernetes-Clusters besteht darin, den Master-Node zu starten. Führen Sie im Terminal Ihres Master-Nodes den folgenden Befehl aus, um den Kubernetes--Master zu initialisieren:

Wenn Sie den obigen Befehl ausführen und Ihr System nicht den erwarteten Anforderungen entspricht, wie z. B. dem minimalen RAM oder der minimalen CPU, wie im Abschnitt „Voraussetzungen“ erklärt, erhalten Sie eine Warnung und der Cluster startet nicht:

install Kubernetes InitError

Hinweis: Wenn Sie für die Produktion entwickeln, ist es ratsam, immer die Mindestanforderungen zu erfüllen, damit Kubernetes reibungslos läuft. Wenn Sie dieses Tutorial jedoch zu Lernzwecken durchführen, können Sie dem Befehl „kubeadm init“ das folgende Flag hinzufügen, um die Fehlermeldungen zu ignorieren:
sudo kubeadm init --ignore-preflight-errors=NumCPU,Mem --pod-network-cidr=10.244.0.0/16

Der folgende Screenshot zeigt, dass die Initialisierung erfolgreich war. Wir haben auch ein Flag hinzugefügt, um das Pod-Netzwerk mit der IP 10.244.0.0 zu spezifizieren. Dies ist die Standard-IP, die kube-flannel verwendet. Wir werden im nächsten Schritt näher auf das Pod-Netzwerk eingehen.

install Kubernetes Kubeadm Init

In der Ausgabe sehen Sie den Befehl kubeadm join (wir haben unsere IP-Adresse ausgeblendet) und ein eindeutiges Token, das Sie auf dem Worker-Node und allen anderen Worker-Nodes ausführen, die Sie diesem Cluster hinzufügen möchten. Kopieren Sie diesen Befehl als Nächstes und fügen Sie ihn ein, da Sie ihn später auf dem Worker-Node benötigen.

In der Ausgabe zeigt Kubernetes auch einige zusätzliche Befehle an, die Sie als normaler Benutzer auf dem Master-Node ausführen sollten, bevor Sie den Cluster verwenden. Führen wir diese Befehle aus:

Wir haben nun den Master-Node initialisiert. Wir müssen jedoch auch das Pod-Netzwerk auf dem Master-Node einrichten, bevor wir die Worker-Nodes hinzufügen.

Schritt 7: Bereitstellen eines Pod-Netzwerks

Ein Pod-Netzwerk erleichtert die Kommunikation zwischen Servern und ist für das ordnungsgemäße Funktionieren des Kubernetes-Clusters erforderlich. Mehr über das Kubernetes-Cluster-Netzwerk erfahren Sie in der offiziellen Dokumentation. Wir werden für dieses Tutorial das Flannel-Pod-Netzwerk verwenden. Flannel ist ein einfaches Overlay-Netzwerk, das die Anforderungen von Kubernetes erfüllt.

Bevor wir das Pod-Netzwerk bereitstellen, müssen wir den Firewall-Status überprüfen. Wenn Sie die Firewall nach Schritt 5 des Tutorials zur Einrichtung Ihres Ubuntu-Servers aktiviert haben, müssen Sie zuerst eine Firewall-Regel hinzufügen, um Ausnahmen für Port 6443 (den Standardport für Kubernetes) zu erstellen. Führen Sie die folgenden ufw-Befehle sowohl auf dem Master- als auch auf den Worker-Nodes aus:

Danach können Sie die folgenden zwei Befehle ausführen, um das Pod-Netzwerk auf dem Master-Node bereitzustellen:

Dies kann je nach Ihrer Umgebung einige Sekunden bis zu einer Minute dauern, um das Flannel-Netzwerk zu laden. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass alles gestartet ist:

Die Ausgabe des Befehls sollte den Status aller Dienste als laufend anzeigen, wenn alles erfolgreich war:

install Kubernetes Pod Status

Sie können auch den Zustand der Komponenten mit dem Befehl „get component status“ anzeigen:

install Kubernetes Component Status

Dieser Befehl hat die Kurzform cs:

Component Status Short

Wenn Sie den Status „unhealthy“ sehen, ändern Sie die folgenden Dateien und löschen Sie die Zeile bei (spec->containers->command), die diese Phrase enthält: - --port=0 :

Tun Sie dasselbe für diese Datei:

Starten Sie schließlich den Kubernetes-Dienst neu:

Schritt 8: Worker-Nodes dem Kubernetes-Cluster hinzufügen

Da der kubernetes-master Node aktiv und das Pod-Netzwerk bereit ist, können wir unsere Worker-Nodes dem Cluster hinzufügen. In diesem Tutorial haben wir nur einen Worker-Node, also werden wir mit diesem arbeiten. Wenn Sie mehr Worker-Nodes haben, können Sie immer die gleichen Schritte wie unten beschrieben ausführen, um dem Cluster beizutreten.

Melden Sie sich zuerst in einer separaten Terminal-Sitzung auf Ihrem Worker-Node an. Sie verwenden Ihren kubeadm join-Befehl, der in Ihrem Terminal angezeigt wurde, als wir den Master-Node in Schritt 6 initialisiert haben. Führen Sie den Befehl aus:

Sie sollten eine ähnliche Ausgabe wie im folgenden Screenshot sehen, wenn der Beitritt zum Cluster abgeschlossen ist:

Worker Join

Sobald der Beitrittsprozess abgeschlossen ist, wechseln Sie zum Terminal des Master-Nodes und führen Sie den folgenden Befehl aus, um zu bestätigen, dass Ihr Worker-Node dem Cluster beigetreten ist:

Im Screenshot der Ausgabe des obigen Befehls können wir sehen, dass der Worker-Node dem Cluster beigetreten ist:

install Kubernetes K8S Node Status

Schritt 9: Bereitstellen einer Anwendung im Kubernetes-Cluster

An diesem Punkt haben Sie erfolgreich ein Kubernetes-Cluster eingerichtet. Machen wir das Cluster nutzbar, indem wir einen Dienst darauf bereitstellen. Nginx is ein beliebter Webserver, der selbst bei Tausenden von Verbindungen mit unglaublicher Geschwindigkeit glänzt. Wir werden den Nginx-Webserver im Cluster bereitstellen, um zu beweisen, dass Sie dieses Setup in einer realen Anwendung nutzen können.

Führen Sie den folgenden Befehl auf dem Master-Node aus, um ein Kubernetes-Deployment für Nginx zu erstellen:

Sie können das erstellte Deployment mit dem Befehl describe deployment anzeigen:

Nginx Deployment

Um den nginx Service über das Internet zugänglich zu machen, führen Sie folgenden Befehl aus:

NodePort Svc Create

Der obige Befehl erstellt einen öffentlich zugänglichen Service für das Nginx-Deployment. Da es sich hierbei um ein nodeport-Deployment handelt, vergibt Kubernetes dem Service einen Port im Bereich von 32000+.

Sie können die aktuellen Services abrufen, indem Sie folgenden Befehl eingeben:

NodePort Svc Status

Sie können sehen, dass unser zugewiesener Port 32264 ist. Notieren Sie sich den in Ihrem Terminal angezeigten Port, um ihn im nächsten Schritt zu verwenden.

Um zu überprüfen, ob das Nginx-Service-Deployment erfolgreich war, führen Sie einen curl-Aufruf vom Master zum Worker-Knoten aus. Ersetzen Sie die IP Ihres Worker-Knotens und den Port, den Sie aus dem obigen Befehl erhalten haben:

Sie sollten die Ausgabe der Standard-Nginx- index.html:

Curl Nginx Svc

Optional können Sie die Kombination aus IP-Adresse und Port des Worker-Knotens in Ihrem Browser aufrufen und die Standard-Nginx-Indexseite anzeigen:

install Kubernetes Nginx Webpage

Sie können ein Deployment löschen, indem Sie den Namen des Deployments angeben. Dieser Befehl löscht beispielsweise unser Deployment:

Wir haben unseren Cluster nun erfolgreich getestet!

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie einen Kubernetes-Cluster auf Ubuntu 20.04 installieren. Sie haben einen Cluster eingerichtet, der aus einem Master- und einem Worker-Knoten besteht. Sie konnten das Kubernetes-Toolset installieren, ein Pod-Netzwerk erstellen und den Worker-Knoten dem Master-Knoten hinzufügen. Wir haben unser Konzept auch getestet, indem wir ein einfaches Deployment eines Nginx-Webservers auf dem Cluster durchgeführt haben. Dies sollte als Grundlage für die Arbeit mit Kubernetes-Clustern auf Ubuntu dienen.

Obwohl wir nur einen Worker-Knoten verwendet haben, können Sie Ihren Cluster um so viele Knoten erweitern, wie Sie möchten. Wenn Sie tiefer in DevOps mit Automatisierungstools wie Ansible einsteigen möchten, haben wir ein Tutorial, das sich mit der Bereitstellung von Kubernetes-Cluster-Deployments mit Ansible und Kubeadm befasst. Schauen Sie es sich an. Wenn Sie lernen möchten, wie man eine PHP-Anwendung auf einem Kubernetes-Cluster bereitstellt, lesen Sie dieses Tutorial.

Viel Spaß beim Computing!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.