So installierst du KubeSphere unter Ubuntu 22.04

Kubesphere ist eine freie und quelloffene Kubernetes-Plattform und ein von der CNCF verifiziertes Cloud-natives Anwendungsmanagement. Es handelt sich um eine Kubernetes-Container-Plattform für Unternehmen mit vielen Funktionen, die auf den hybriden Multi-Cloud-Einsatz zugeschnitten ist. Kubesphere beinhaltet standardmäßig vollständig automatisierte IT-Operationen und ist mit DevOps-Workflows optimiert. Es kann auf einen bestehenden Kubernetes-Cluster oder eine Linux-Distribution aufgesetzt werden. Du kannst Kubesphere aber auch über KubeKey einrichten, ein Kommandozeilen-Tool für Linux, mit dem du Kubernetes-Cluster automatisch deployen, aktualisieren und skalieren kannst.

Kubesphere bietet ein intuitives grafisches Web-UI für die Verwaltung des Kubernetes-Clusters. Es enthält außerdem Plug-Ins für CI/CD-Tools wie Jenkins, mit denen du automatisch eine CI/CD-Pipeline einrichten kannst. Außerdem bietet es Source-to-Image (S2I) für die automatische Erstellung reproduzierbarer Container-Images aus dem Quellcode und Binary-to-Image (B2I) für die Erstellung reproduzierbarer Container-Images aus einer Binärdatei (Jar, War, Binary file).

Dieser Artikel führt dich durch die Implementierung von Kubernetes und Kubesphere auf Ubuntu 22.04 Servern. Du wirst mehrere Ubuntu-Server für diesen Einsatz verwenden und die KubeKey-Anwendung nutzen, die von Kubesphere für den automatischen Einsatz von Kubernetes-Cluster und Kubesphere bereitgestellt wird.

Voraussetzungen

Um dieses Tutorial durchzuführen, brauchst du die folgenden Voraussetzungen:

  • Drei Linux-Server mit Ubuntu 22.04 – Du wirst einen Server als Kubernetes Control-Plane und zwei Server als Worker Nodes verwenden.
  • Einen Nicht-Root-Benutzer mit sudo/root administrator pirivlges.

Hosts und Benutzer einrichten

Bevor du Kubernetes und Kubesphere installierst, musst du die Datei „/etc/hosts“ einrichten und einen neuen Benutzer mit sudo password-less auf allen deinen Servern anlegen. Deshalb musst du die folgenden Befehle auf allen deinen Ubuntu-Servern ausführen.

Öffne nun die Datei „/etc/hosts“ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/hosts

Füge die IP-Adressen der Server und den Hostnamen in die Datei ein.

192.168.5.35    master    master
192.168.5.121   node1     node1
192.168.5.122   node2     node2

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Als Nächstes gibst du den folgenden Befehl ein, um einen neuen Benutzer namens „ubuntu“ zu erstellen und das Passwort für den neuen Benutzer„ubuntu“ festzulegen. Wenn du dazu aufgefordert wirst, gib dein Passwort ein und wiederhole es.

sudo useradd -m -s /bin/bash ubuntu
sudo passwd ubuntu

Zum Schluss gibst du den folgenden Befehl ein, damit der Benutzer „ubuntu“„sudo“ ohne Passwort ausführen kann. Der Benutzer „ubuntu“ wird für die Installation von Paketabhängigkeiten verwendet, daher musst du sicherstellen, dass der Benutzer ohne Passwort zu root werden kann.

cat <<EOF | sudo tee /etc/sudoers.d/ubuntu
Defaults:ubuntu !fqdn
Defaults:ubuntu !requiretty
ubuntu ALL=(ALL) NOPASSWD: ALL
EOF

Nachdem du die Datei „/etc/hosts“ konfiguriert und den Benutzer„ubuntu“ angelegt hast, richtest du als Nächstes die passwortlose SSH-Authentifizierung für den Benutzer„ubuntu“ ein.

Einrichtung Hosts Benutzer

SSH-Authentifizierung mit Schlüssel einrichten

In diesem Abschnitt richtest du eine passwortlose SSH-Authentifizierung für den Benutzer „ubuntu“ ein. Das Szenario für die Installation von Kubernetes und Kubesphre geht also vom„Master„-Server aus. Die Installation auf„node1“ und „node2“ wird automatisch durchgeführt.

Gib auf dem „Master“-Server den folgenden Befehl ein, um dich als Benutzer„ubuntu“ anzumelden. Erstelle dann mit dem Befehl„ssh-keygen“ ein neues SSH-Schlüsselpaar (siehe unten). Wenn du fertig bist, werden deine öffentlichen und privaten SSH-Schlüssel im Verzeichnis„~/.ssh“ gespeichert.

su - ubuntu
ssh-keygen -t ed25519

ssh-schlüssel generieren

Als Nächstes gibst du den folgenden Befehl ein, um den öffentlichen SSH-Schlüssel vom „Master“-Server an alle Knoten zu senden, die für die Kubernetes- und Kubesphre-Installation verwendet werden sollen.

ssh-copy-id ubuntu@master
ssh-copy-id ubuntu@node1
ssh-copy-id ubuntu@node2

Gib„ja“ ein, um den SSH-Fingerprint für den Server zu akzeptieren, und gib dann das Passwort für den Benutzer„ubuntu“ ein, wenn du dazu aufgefordert wirst. Sobald der SSH-Schlüssel hinzugefügt wurde, solltest du eine Ausgabe wie„Anzahl der hinzugefügten Schlüssel: 1“ erhalten.

Unten siehst du eine Ausgabe, wenn du den öffentlichen SSH-Schlüssel zum localhost des„Master„-Servers hinzufügst.

ssh-Schlüssel auf localhost hochladen

Unten siehst du die Ausgabe, wenn du den öffentlichen SSH-Schlüssel zum Server„node1“ hinzufügst.

ssh-Schlüssel auf node1 hochladen

Unten siehst du die Ausgabe, wenn du den öffentlichen SSH-Schlüssel zum Server„node2“ hinzufügst.

ssh-Schlüssel zu node2 hochladen

Nachdem der öffentliche SSH-Schlüssel hinzugefügt und hochgeladen wurde, kannst du dich jetzt mit dem Benutzer „ubuntu“ ohne Passwortauthentifizierung mit all deinen Servern verbinden.

Im nächsten Abschnitt überprüfst du, ob du dich mit einem passwortlosen„ubuntu„-Benutzer mit allen Knoten/Servern verbinden kannst, und installierst dann einige Paketabhängigkeiten.

Installieren der Abhängigkeiten

Du hast also den öffentlichen SSH-Schlüssel vom„Master„-Server auf die beiden Server„node1“ und„node2“ hochgeladen. Jetzt stellst du sicher, dass du dich über den Benutzer „ubuntu“ mit einer passwortlosen SSH-Authentifizierung mit beiden Servern verbinden kannst und installierst die grundlegenden Abhängigkeiten für Kubernetes und Kubesphere.

Gib auf dem„Master„-Server den folgenden Befehl ein, um den Ubuntu-Paketindex zu aktualisieren und einige Paketabhängigkeiten über den unten stehenden Befehl„apt install“ zu installieren.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

ssh-keyscan -H master >> ~/.ssh/known_hosts

Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst ENTER, um fortzufahren.

Abhängigkeiten installieren

Als Nächstes verbindest du dich mit dem Server„node1“ über den unten stehenden Befehl„ssh„. Nachdem der Befehl ausgeführt wurde, solltest du bei„node1“ ohne Passwortauthentifizierung eingeloggt sein.

ssh ubuntu@node1

Gib nun den folgenden apt-Befehl ein, um deinen Ubuntu-Paketindex zu aktualisieren und aufzufrischen. Installiere dann einige grundlegende Paketabhängigkeiten. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

Anmeldung node1 Pakete installieren

Zuletzt verbindest du dich mit dem Server„node2“ über den unten stehenden„ssh„-Befehl.

ssh ubuntu@node2

Sobald du verbunden bist, gibst du den folgenden Befehl ein, um den Paketindex des Repositorys zu aktualisieren. Dann installierst du einige Paketabhängigkeiten mit dem Befehl„apt install„.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

Gib y ein, wenn du dazu aufgefordert wirst und drücke ENTER, um fortzufahren.

login node2 install dependencies

Jetzt hast du deine Server für die Installation von Kubernetes und Kubesphre konfiguriert. Im nächsten Abschnitt lädst du die Binärdatei von KubeKey herunter, die für die Initialisierung des Kubernetes-Clusters und die Installation von Kubesphere benötigt wird.

Herunterladen von KubeKey auf dem Master-Knoten

In diesem Abschnitt lädst du die KubeKey-Binärdatei auf den „Master“-Server herunter. Der KubeKey ist eine einzelne Binärdatei, mit der du den Kubernetes-Cluster und/oder das KubeSphere-Administrations-Dashboard installieren kannst. Er unterstützt auch Cloud-native Add-ons, Multi-Knoten und HA (High Availability).

Gib den folgenden Befehl ein, um die Binärdatei von KubeKey in dein aktuelles Arbeitsverzeichnis herunterzuladen. Wenn der Vorgang abgeschlossen ist, solltest du die Datei „kk“ in deinem Verzeichnis sehen.

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -

Führe nun den folgenden Befehl aus, um die Datei„kk“ ausführbar zu machen.

chmod +x kk

kubekey download

Führe dann die Binärdatei‚kk‚ aus, um die aktuelle Version und die verfügbaren Parameter der Liste auf dem KubeKey zu überprüfen.

./kk version
./kk help

Unten siehst du eine ähnliche Ausgabe, die auf deinem Terminalbildschirm ausgedruckt wird.

Kubusschlüssel überprüfen

Nachdem KubeKey heruntergeladen wurde, beginnst du mit der Konfiguration der Kubernetes- und Kubesphere-Bereitstellung über KubeKey.

Kubernetes- und Kubesphere-Deployment-Konfiguration erstellen

Der KubeKey kann für die reine Kubernetes-Bereitstellung oder mit der KubeSphere verwendet werden. Außerdem unterstützt er sowohl Einzelkubernetes- als auch Multiknoten-Deployments.

Für den Einsatz von Kubernetes und Kubesphere mit mehreren Knoten musst du ein YAML-Skript erstellen, das die Konfiguration des Servers festlegt.

Führe den folgenden„kk“ -Befehl aus, um eine neue YAML-Konfiguration zu erstellen. In diesem Beispiel erstellst du ein neues YAML-Skript„deployment-kubesphre.yml“ und gibst die Kubernetes-Version v1.24.2 und Kubesphere v3.3.1 an.

./kk create config -f deployment-kubesphre.yml --with-kubernetes v1.24.2 --with-kubesphere v3.3.1

Du solltest eine Ausgabe wie„Generate KubeKey config file successfully“ sehen.

Kubekey-Konfiguration erzeugen

Öffne nun die YAML-Datei„deployment-kubesphre.yml“ mit dem folgenden nano-Editor-Befehl.

nano deployment-kubesphre.yml

Ändere den Clusternamen im Parameter„metadata: testdeployment“ und ändere die IP-Adresse des Detail-Hosts, den Benutzer und den privaten Schlüssel für das Logging auf den Zielservern. Schließlich gibst du in der„roleGroup“ an, welcher Host als Control Plane und Worker Nodes verwendet werden soll.

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: testdeployment
spec:
  hosts:
  - {name: master, address: 192.168.5.35, internalAddress: 192.168.5.35, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node1, address: 192.168.5.121, internalAddress: 192.168.5.121, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node2, address: 192.168.5.122, internalAddress: 192.168.5.122, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node1
    - node2

Speichere die Datei und beende den Editor, wenn du fertig bist.

Hosts-Einstellungen

In diesem Beispiel wirst du einen neuen Kubernetes-Cluster mit dem Namen „testdeployment“ mit drei verschiedenen Ubuntu-Servern erstellen.

  • master als etcd und Control Plane.
  • node1 und node2 werden als Worker Nodes verwendet.

Um alle Anforderungen auf den Zielservern zu installieren, benutzt du SSH und meldest dich mit dem privaten Schlüssel„~/.ssh/id_ed25519“ als Benutzer„ubuntu“ an. Dieser Benutzer ist in visudo als passwortlos konfiguriert.

Nachdem du die YAML-Datei erstellt und konfiguriert und das Kubernetes- und Kubesphre-Deployment erstellt hast, kannst du mit den folgenden Schritten fortfahren, um das Deployment zu starten.

Bereitstellung von Kubernetes und Kubesphere

In diesem Abschnitt wirst du sowohl Kubernetes als auch Kubesphere mit Multi-Knoten-Architektur über KubeKey und das YAML-Skript„deployment-kubesphre.yml“ bereitstellen.

Führe die Kubekey-Binärdatei„kk“ unten aus, um das Kubernetes- und Kubesphere-Deployment mit der YAML-Datei„deployment-kubesphre.yml“ zu starten.

./kk create cluster -f deployment-kubesphre.yml

Zunächst prüft KubeKey die Voraussetzungen für die Kubernetes-Installation. Wenn die Installation erfolgreich war, wirst du aufgefordert, sie zu bestätigen. Gib Ja ein und drücke ENTER, um fortzufahren.

kubernetes kubepshere implementieren

Es wird etwa 5-10 Minuten dauern, bis die Installation abgeschlossen ist. Wenn sie abgeschlossen ist, solltest du eine ähnliche Ausgabe wie diese auf deinem Terminal sehen. Außerdem erhältst du den Standard-Admin-Benutzer und das Passwort, mit denen du dich bei Kubesphere anmelden kannst.

Kubernetes-Bereitstellung abgeschlossen

Öffne nun deinen Webbrowser und rufe die IP-Adresse des „Master“-Servers auf, gefolgt von Port „30880“ (d.h.: http://192.168.5.35:30880/). Du solltest die Anmeldeseite von Kubepshre sehen.

Gib den Benutzer„admin“ und das Standardpasswort„P@88w0rd“ ein und klicke auf „Anmelden“.

Login-Seite

Nach dem Einloggen solltest du aufgefordert werden, das Standardpasswort für den Kubepshre-Benutzer„admin“ zu ändern. Gib dein neues Passwort ein und klicke auf Absenden.

Wechselpass

Wenn du fertig bist, solltest du das Dashboard der Kubesphere-Administration sehen. Auf der Dashboard-Seite sollte die aktuelle Version von Kubesphere v3.3.1 angezeigt werden und der verfügbare Kubernetes-Cluster ist 1.

kubesphere Dashboard

Als Nächstes klickst du oben links auf das Menü Plattform und wählst dann Cluster Management.

Clustermanagement

Unten siehst du die Details des Kubernetes-Clusters, den du mit mehreren Ubuntu-Servern, dem Server„master„, node1 und node2 installiert hast.

Standard-Cluster

Klicke nun auf das Menü Nodes, um detaillierte Informationen über die verfügbaren Nodes im Kubernetes-Cluster zu erhalten. Unten siehst du, dass es drei verschiedene Nodes im Kubernetes-Cluster gibt. Der„Master„-Server wird sowohl als Control Plane als auch als Worker Node verwendet.

Listenknoten

Klicke nun auf die Systemkomponenten, um die Details der installierten Komponenten in deinem Kubernetes- und Kubesphere-Einsatz zu sehen. Du kannst drei verschiedene Kategorien von Komponenten sehen: Kubesphere, Kubernetes und Monitoring.

Komponenten auflisten

Als Nächstes kehrst du zur Terminalsitzung des „Master“-Servers zurück und führst den folgenden„kubectl„-Befehl aus, um die Liste der verfügbaren Knoten in deinem Kubernetes-Cluster zu erhalten.

kubectl get nodes

Du solltest eine ähnliche Ausgabe erhalten wie diese – Es sind drei Knoten im Kubernetes-Cluster verfügbar: der Master-Knoten, der als Control Plane verwendet wird, und die Knoten 1 und 2, die als Worker-Knoten dienen.

Knoten verifizieren

Gib den folgenden Befehl ein, um detaillierte Informationen über jeden Knoten des Kubernetes-Clusters zu erhalten.

kubectl describe node

Unten siehst du die Details der Kubernetes-Kontrollebene auf dem„Master„-Server.

Knotenmaster beschreiben

Unten siehst du die Details des Worker Nodes auf dem Server node1.

Knoten1 beschreiben

Unten siehst du die Details des Worker Nodes auf dem Server node2.

node2 beschreiben

Gib schließlich den folgenden Befehl ein, um die Liste der Pods zu erhalten, die in deinem Kubernetes-Cluster laufen.

kubectl get pods --all-namespaces

In der folgenden Ausgabe siehst du die Namespaces„kube-system“, „kubesphere-system“, „kubesphere-control-system“ und„kubesphere-monitoring-system„, die in deinem Kubernetes-Cluster verfügbar sind und in denen alle Pods laufen.

Hülsen prüfen

Jetzt hast du den Kubernetes-Cluster und Kubesphere mit mehreren Ubuntu-Serverknoten eingerichtet. Außerdem hast du auf das Administrations-Dashboard von Kubesphere zugegriffen und das Standardpasswort für den Administrator geändert.

Damit kannst du jetzt deine Anwendung in Kubernetes und Kubesphere bereitstellen. Im nächsten Schritt stellst du den einfachen Nginx-Webserver in Kubernetes bereit, um sicherzustellen, dass deine Installation von Kubernetes und Kubesphere erfolgreich ist.

Pods für Kubernetes und Kubesphere bereitstellen

In diesem Beispiel wirst du Nginx-Pods für den Kubernetes-Cluster und Kubesphere bereitstellen.

Führe den folgenden Befehl aus, um eine neue Bereitstellung für den Nginx-Webserver zu erstellen. In diesem Beispiel erstellen wir neue Nginx Pods basierend auf dem Image„nginx:alpine“ mit zwei Repliken.

kubectl create deployment nginx --image=nginx:alpine --replicas=2

Erstelle nun einen neuen Dienst vom Typ „NodePort“, der das Nginx-Deployment mit dem folgenden kubectl-Befehl bereitstellt. Dieser Befehl erstellt einen neuen Kubernetes-Dienst namens„nginx“ mit dem Typ„NodePort“ und stellt den Port„80“ für den Pod bereit.

kubectl create service nodeport nginx --tcp=80:80

Bereitstellungsdienst erstellen

Als nächstes führst du den folgenden kubectl-Befehl aus, um die Liste der laufenden Pods in deinem Kubernetes-Cluster zu überprüfen. Du solltest sehen, dass zwei Nginx-Pods laufen.

kubectl get pods

Hülsen prüfen

Überprüfe nun die Liste der verfügbaren Dienste in Kubernetes mit folgendem Befehl. Du solltest sehen, dass der Dienst„nginx“ vom Typ NodePort den Port„80“ und den Port„32241“ auf den Kubernetes-Hosts freigibt. Der Dienst NodePort gibt auf den Kubernetes-Hosts (Worker Nodes) immer den Port im Bereich xxx-xxxx an.

kubectl get svc

Dienstleistungen prüfen

Führe den folgenden curl-Befehl aus, um auf deinen Nginx-Einsatz zuzugreifen.

curl 10.233.14.102
curl node1:32241
curl node2:32241

Unten siehst du die Ausgabe der index.html-Seite des Nginx-Pods, die auf dem„Master„-Server angezeigt wird.

nginx-Einsatz überprüfen

Unten siehst du die Ausgabe des index.html-Quellcodes von„node1„.

nginx index node1

Und unten ist der index.html-Code von„node2„.

nginx deployment master

Nun zurück zum Kubesphere Administrations-Dashboard. Klicke auf die Anwendungs-Workloads und dann auf Workloads. Du wirst sehen, dass das Deployment„nginx“ verfügbar ist und zwei Pods laufen.

Unterliste

Klicke auf den Einsatz„nginx„, um detaillierte Informationen über deinen Einsatz zu erhalten. Du solltest sehen, dass der„nginx„-Einsatz zwei Replikate enthält und dass die Replikate dieser beiden Pods laufen.

Unterliste

Als Nächstes klickst du auf das Menü Dienste, um eine Liste der in deinem Kubernetes-Cluster verfügbaren Dienste zu erhalten. Du solltest sehen, dass die Dienste„nginx“ und„Kubernetes“ in deinem Cluster verfügbar sind.

Dienstleistungen auflisten

Klicke auf den Dienst„nginx„, um detaillierte Informationen über den Dienst zu erhalten. Unten siehst du eine ähnliche Seite, die auf deinem Kubesphere Dashboard angezeigt wird.

detail service nginx

Damit hast du die Einrichtung von Nginx-Pods im Kubernetes-Cluster abgeschlossen und die Details der Einrichtung im Kubesphere-Administrations-Dashboard überprüft.

Fazit

In diesem Tutorial hast du nun den Kubernetes-Cluster und Kubesphre auf mehreren Ubuntu 22.04-Servern eingerichtet. Du hast Kubernetes mit dem von Kubesphere entwickelten Automatisierungstool „KubeKey“ implementiert. Du hast auch die grundlegende Konfiguration von Ubuntu-Servern für die Kubernetes-Bereitstellung gelernt.

Außerdem hast du Kubesphere als Webadministrations-Dashboard für Kubernetes erfolgreich installiert und konfiguriert. Du hast die grundlegenden Funktionen von Kubesphere für die Verwaltung von Kubernetes-Clustern, Deployments, Pods und Diensten kennengelernt.

Um mehr über Kubesphere zu erfahren, besuche die offiziellen Dokumentationen von Kubesphere. Was Kubernetes betrifft, besuche die offizielle Dokumentation von Kubernetes.

Das könnte dich auch interessieren …