Was ist k3d?k3d ist ein kleines Programm zum Ausführen eines K3s-Clusters in Docker. K3s ist eine leichtgewichtige, von der CNCF zertifizierte Kubernetes-Distribution und ein Sandbox-Projekt. Es ist für Umgebungen mit beschränkten Ressourcen konzipiert und als einzelne Binärdatei verpackt, die weniger als 512 MB RAM benötigt. Um mehr über K3s zu erfahren, sehen Sie sich unsere vorherigen Artikel und Videos zu Bilibili an. k3d startet mehrere K3s-Knoten in Docker-Containern auf jedem Computer, auf dem Docker installiert ist, und verwendet dabei Docker-Images, die aus dem K3s-Repository erstellt wurden. Auf diese Weise kann eine physische (oder virtuelle) Maschine (Docker-Host genannt) mehrere K3s-Cluster mit jeweils mehreren Server- und Agent-Knoten ausführen. Was kann k3d?Im Januar 2021 wurde k3dv4.0.0 veröffentlicht, das die folgenden Funktionen enthält:
Natürlich gibt es noch viele weitere Möglichkeiten, die Details des Prozesses anzupassen. Wozu dient k3d?Das Hauptanwendungsszenario von k3d ist die lokale Entwicklung auf Kubernetes. Aufgrund der leichten und einfachen Funktionen von k3d gibt es in diesem Szenario fast keine Probleme und Probleme bei der Ressourcennutzung. Die ursprüngliche Absicht bei der Entwicklung von k3d bestand darin, Entwicklern ein einfaches Tool bereitzustellen, mit dem sie einen leichten Kubernetes-Cluster auf ihrer Entwicklungsmaschine ausführen können, um schnelle Iterationszeiten in einer produktionsähnlichen Umgebung zu erreichen (viel schneller als die lokale Ausführung von Docker-Compose mit Kubernetes in der Produktion). Im Laufe der Zeit hat sich k3d auch zu einem Betriebstool zum Testen bestimmter Kubernetes- (oder speziell K3s-)Funktionen in einer isolierten Umgebung entwickelt. Mit k3d können Sie beispielsweise problemlos einen Cluster mit mehreren Knoten erstellen, einige Anwendungen darauf bereitstellen, einen Knoten einfach anhalten und sehen, wie Kubernetes reagiert, und Ihre Anwendung auch auf andere Knoten verschieben. Darüber hinaus können Sie k3d in Ihrem kontinuierlichen Integrationssystem verwenden, um schnell einen Cluster zu starten, Ihren Test-Stack darauf bereitzustellen und Integrationstests auszuführen. Wenn Sie fertig sind, können Sie den gesamten Cluster einfach deaktivieren. Sie müssen sich keine Gedanken über die ordnungsgemäße Reinigung und mögliche Rückstände machen. Wir stellen auch ein k3d-dind-Image bereit (ähnlich dem Traum im Traum im Film „Inception“ haben wir einen Container in einem Container in einem Container). Damit können Sie eine Docker-in-Docker-Umgebung erstellen, in der k3d ausgeführt wird, wodurch ein K3s-Cluster in Docker erzeugt wird. Dies bedeutet, dass auf Ihrem Docker-Host nur ein Container (k3d-dind) ausgeführt wird, in dem wiederum der gesamte K3s/Kubernetes-Cluster ausgeführt wird. Wie verwende ich k3d?1. Installieren Sie k3d (bei Bedarf können Sie auch kubectl installieren) Hinweis: Dieser Artikel hat Versionsanforderungen, bitte verwenden Sie mindestens k3d v4.1.1 oder höher 2. Probieren Sie eines der folgenden Beispiele aus oder verwenden Sie die Dokumentation oder den CLI-Hilfetext, um Ihren eigenen Weg zu finden (k3d [Befehl] --help). Der „einfache“ Weg K3D-Cluster erstellen Dieser Befehl erstellt einen K3s-Cluster mit zwei Containern: einem Kubernetes-Steuerebenenknoten (Server) und einem davor liegenden Load Balancer (Serverlb). Es platziert sie alle in einem dedizierten Docker-Netzwerk und stellt die Kubernetes-API auf einem zufällig ausgewählten freien Port auf dem Docker-Host bereit. Außerdem wird im Hintergrund zur Vorbereitung des Image-Imports ein Volume mit dem Namen Docker erstellt. Wenn Sie keinen Namensparameter angeben, wird der Cluster standardmäßig als k3s-default bezeichnet und die Container werden als k3d- angezeigt. k3d wartet, bis alles bereit ist, ruft die Kubeconfig aus dem Cluster ab und führt sie mit der Standard-Kubeconfig zusammen (normalerweise in $HOME/.kube/config oder dem Pfad, auf den die Umgebungsvariable KUBECONFIG verweist). Verwenden Sie kubectl, um zu sehen, was Sie gerade erstellt haben, um die Knoten anzuzeigen: kubectl get nodes Der „einfache, aber raffinierte“ Ansatz k3d-Cluster erstellt mycluster --api-port 127.0.0.1:6445 --Server 3 --Agenten 2 --Volume '/home/me/mycode:/code@agent[*]' --Port '8080:80@loadbalancer' Dieser Befehl generiert einen K3s-Cluster mit sechs Containern: * 1 Load Balancer * 3 Server (Control Plane Nodes) * 2 Agenten (früher Worker Nodes) Mit --api-port 127.0.0.1:6445 können Sie k3d verwenden, um den Kubernetes-API-Port (intern 6443) dem Port 6445 von 127.0.0.1/localhost zuzuordnen. Das bedeutet, dass Sie dann die folgende Verbindungszeichenfolge in Ihre Kubeconfig aufnehmen würden: Server: https://127.0.0.1:6445, um eine Verbindung mit diesem Cluster herzustellen. --volume /home/me/mycode:/code@agent[ ] bind mountet Ihr lokales Verzeichnis /home/me/mycode in den Pfad /code innerhalb aller ([ ] Agent-Knoten). Ersetzen Sie * durch den Index (0 oder 1), um es nur an einem der Knoten zu mounten. Das heißt, --port '8080:80@loadbalancer' ordnet Port 8080 des lokalen Hosts Port 80 auf dem Load Balancer (serverlb) zu, der zum Weiterleiten von eingehendem HTTP-Verkehr an den Cluster verwendet werden kann. Beispielsweise kann eine Webanwendung in einem Cluster bereitgestellt werden (Bereitstellung), der über einen Ingress wie myapp.k3d.localhost extern verfügbar gemacht wird (Dienst). Dann können Sie (vorausgesetzt alles ist so eingerichtet, dass diese Domäne in Ihre lokale Host-IP aufgelöst wird) Ihren Browser auf http://myapp.k3d.localhost:8080 richten, um auf Ihre App zuzugreifen. Der Datenverkehr fließt dann über die Docker-Bridge-Schnittstelle von Ihrem Host zum Load Balancer. Von dort wird es per Proxy an den Cluster weitergeleitet und über Ingress und Service an Ihre Anwendungs-Pods übermittelt.
Beachten Sie hierbei, dass K3s beim Erstellen mehrerer Serverknoten das Flag --cluster-init zugewiesen wird. Dies bedeutet, dass die interne Standarddatenbank von K3s (standardmäßig SQLite) in etcd geändert wird. „Configure as Code“-Ansatz Ab k3d v4.0.0 (veröffentlicht im Januar 2021) unterstützen wir die Verwendung von Konfigurationsdateien, um alles zu konfigurieren, was Sie zuvor mit Befehlszeilenflags getan haben (und bald vielleicht sogar noch mehr). Zum Zeitpunkt des Schreibens finden Sie das JSON-Schema zum Validieren von Konfigurationsdateien im Repo: Beispielkonfigurationsdatei: # k3d-Konfigurationsdatei, gespeichert zB als /home/me/myk3dcluster.yaml apiVersion: k3d.io/v1alpha2 # dies wird sich in Zukunft ändern, da wir alles stabiler machen Art: Einfach # intern haben wir auch eine Cluster-Konfiguration, die extern noch nicht verfügbar ist Name: mycluster # Name, den Sie Ihrem Cluster geben möchten (wird weiterhin mit „k3d-“ beginnen) Server: 1 # dasselbe wie „--servers 1“ Agenten: 2 # dasselbe wie „--agents 2“ kubeAPI: # dasselbe wie „--api-port 127.0.0.1:6445“ Host-IP: "127.0.0.1" HostPort: "6445" Häfen: - Port: 8080:80 # dasselbe wie „--port 8080:80@loadbalancer“ Knotenfilter: - Lastenausgleich Optionen: k3d: # k3d-Laufzeiteinstellungen wait: true # warten, bis der Cluster nutzbar ist, bevor zurückgekehrt wird; dasselbe wie „--wait“ (Standard: true) timeout: "60s" # Timeout abwarten vor dem Abbrechen; dasselbe wie `--timeout 60s` k3s: # Optionen, die an K3s selbst weitergegeben werden extraServerArgs: # zusätzliche Argumente, die an den Befehl „k3s server“ übergeben werden - --tls-san=meine.host.domain extraAgentArgs: [] # zusätzliche Argumente, die an den Befehl „k3s agent“ übergeben werden kubeconfig: updateDefaultKubeconfig: true # neuen Cluster zu Ihrer Standard-Kubeconfig hinzufügen; dasselbe wie „--kubeconfig-update-default“ (Standard: true) switchCurrentContext: true # setzt auch den aktuellen Kontext auf den Kontext des neuen Clusters; dasselbe wie „--kubeconfig-switch-context“ (Standard: true) Vorausgesetzt, wir haben dies als /home/me/myk3dcluster.yaml gespeichert, können wir dies verwenden, um einen neuen Cluster zu konfigurieren HINWEIS: Sie können weiterhin zusätzliche Parameter oder Flags festlegen, die Vorrang vor allen Parametern haben, die Sie in der Konfigurationsdatei definieren (oder mit diesen zusammengeführt werden). Was kann k3d sonst noch?Sie können k3d in vielen Szenarien verwenden, zum Beispiel:
Sie können dies alles selbst ausprobieren, indem Sie die in diesem Demo-Repo vorbereiteten Skripte verwenden: THORSTEN KLEIN Das Obige ist der detaillierte Inhalt des ausführlichen Tutorials des k3d-Leitfadens zum Ausführen von K3s in Docker. Weitere Informationen zum Ausführen von K3s in Docker finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: Eine kurze Erläuterung des MySQL-Ausführungsprozesses und der MySQL-Ausführungssequenz
Inhaltsverzeichnis Überblick Erstellen Sie eine T...
In diesem Artikelbeispiel wird der spezifische Co...
Um die Lebensdauer der Festplatte zum Speichern v...
Mauseffekte erfordern die Verwendung von setTimeo...
Zunächst: Was ist Datenbankpartitionierung? Ich h...
Dieser Artikel stellt hauptsächlich vor, wie pagi...
Mit der Multisite-Funktion von WordPress können S...
1. Konzept 1. Der Unterschied zwischen Hot Backup...
1. Was sind CSS-Methoden? CSS methodologies könne...
Inhaltsverzeichnis Tutorial-Reihe 1. Einführung u...
Da das Distributionspaket von MySQL Community Ser...
Viele Freunde stellten beim Erlernen des Front-En...
Installations-Tutorial zur dekomprimierten Versio...
Inhaltsverzeichnis 1. Häufig verwendete Zeichenfo...
Vorwort Da ich während des Lernprozesses Zookeepe...