KlusterKit: eine Sammlung von Open-Source-Tools zur Vereinfachung von Kubernetes-Deployments und zum Betrieb in physisch isolierten lokalen Umgebungen

Heute freuen wir uns, bekannt zu geben, dass Platform9 die Quellcodes von Klusterkit, einem Set von drei Tools, unter der Apache v2.0 Lizenz auf GitHub veröffentlicht.
Unsere Kunden setzen Software in privaten Rechenzentren ein, die oft nicht mit dem Internet verbunden sind (aus Sicherheitsgründen oder anderen Gründen). Diese großen Unternehmen möchten die Vorteile von Kubernetes nutzen und ihre Anwendungen modernisieren, während sie diese in verschiedenen Rechenzentren ausrollen, die häufig keine Verbindung zur Außenwelt haben. Hier kommt Klusterkit ins Spiel, das die Bereitstellung und Verwaltung von K8s-Clustern in physisch isolierten Umgebungen vereinfacht.
Klusterkit besteht aus drei unabhängigen Tools, die zusammen oder einzeln verwendet werden können, um den Lebenszyklus eines Produktions-Kubernetes-Clusters zu verwalten:
- , ein CLI für die vereinfachte Verwaltung des etcd-Clusters.
- , ein CLI zur Verwaltung von Knoten, das kubeadm ergänzt und die Abhängigkeiten bereitstellt, die kubeadm benötigt.
- , ein Lebenszyklusmanagement-Tool für Cluster, das die Cluster-API der Kubernetes-Community nutzt und nodeadm sowie etcdadm einsetzt, um hochverfügbare Kubernetes-Cluster in lokalen und auch physisch isolierten Umgebungen unkompliziert bereitzustellen und zu verwalten.
Gemeinsam erfüllen diese drei Werkzeuge folgende Aufgaben:
- Einfache Bereitstellung und Verwaltung eines hochverfügbaren etcd-Clusters und des Kubernetes-Dashboards in physisch isolierten lokalen Umgebungen über die Cluster-API.
- Wiederherstellung des Cluster-Dashboards nach einem Ausfall mithilfe eines etcd-Backups.
- Verpackung aller Artefakte, die für die Bereitstellung von Kubernetes in physisch isolierten Umgebungen erforderlich sind.
Funktionen von Klusterkit
- Unterstützung mehrerer Master (HA-Cluster K8s).
- Bereitstellung und Verwaltung von sicheren etcd-Clustern.
- Betrieb in physisch isolierten Umgebungen.
- Unterstützung für sequenzielle Updates und Rollbacks.
- Flannel (vxlan) als CNI für das Backend; Unterstützung für andere CNIs ist geplant.
- Backup und Wiederherstellung von etcd-Clustern nach Verlust der Quorum.
- Schutz des Dashboards vor Speichermangel und CPU-Zeit.
Architektur der Klusterkit-Lösung
Für Hochverfügbarkeit und Benutzerfreundlichkeit verwendet Klusterkit eine einzige Datei cctl-state.yaml zur Speicherung der Cluster-Metadaten von Kubernetes. Über das cctl CLI können Sie den Lebenszyklus des Kubernetes-Clusters auf jedem Rechner verwalten, auf dem sich diese Statusdatei befindet. Dies kann der Laptop des Operators oder jeder andere Computer sein, der Teil des Kubernetes-Clusters ist.
Cctl implementiert und nutzt das upstream-Interface cluster-api als Bibliothek für CRUD-Operationen auf Clustern. Es verwendet , einen Open-Source-Cluster-api-Anbieter auf "nackter Hardware" von Platform9, der wiederum etcdadm und nodeadm für die Ausführung von Operationen im Cluster aufruft.
So verwenden Sie Klusterkit und seine Komponenten:
1 – Jedes der drei Tools lässt sich ganz einfach mit dem Befehl go get installieren:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Anschließend können diese ausführbaren Dateien verpackt und auf die Zielmaschinen kopiert werden, auf denen der hochverfügbare Kubernetes-Cluster betrieben werden soll. Platzieren Sie die Dateien nodeadm und etcdadm in den Versionsverzeichnissen:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Wenn es notwendig ist, ein Kubernetes-Cluster lokal in einer physisch isolierten Umgebung zu orchestrieren, können die benötigten Abhängigkeiten einfach im Voraus auf einem Computer mit Internetzugang mit dem Befehl zum Herunterladen von nodeadm und etcdadm geladen werden. Anschließend können die heruntergeladenen Elemente (d.h. kubelet und die kubelet-Einheitendatei für systemd, ausführbare CNI-Dateien, die kubeadm-Datei, alle Container-Images einschließlich Kubernetes, das keepalived-Image und die systemd-Datei sowie das etcd-Container-Image und die entsprechenden Konfigurationsdateien) leicht auf die physisch isolierten Hosts zusammen mit cctl, nodeadm und etcdadm kopiert werden. (Details finden Sie in ).
4 – Wenn alles bereit ist, kann der erste Kubernetes-Cluster mit ein paar Befehlen erstellt werden:
– Zuerst erstellen Sie die Anmeldeinformationen für den Cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa– Dann erstellen Sie das Cluster-Objekt. –help listet die unterstützten Parameter auf.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Schließlich erstellen Sie die erste Maschine im Cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterLesen Sie mehr Dokumentation unter .
Quelle: habr.com
