KlusterKit

KlusterKit: Ein Open-Source-Toolkit zur Vereinfachung von Kubernetes-Bereitstellungen und zur Ausführung in physisch isolierten lokalen Umgebungen

KlusterKit

Heute freuen wir uns, Ihnen mitteilen zu können, dass Platform9 Klusterkit, eine Suite aus drei Tools, unter der Apache v2.0-Lizenz auf GitHub als Open-Source-Lösung anbietet.

Unsere Kunden führen Software in privaten Rechenzentren ein, die häufig (aus Sicherheits- oder anderen Gründen) nicht an das Internet angeschlossen sind. Diese großen Unternehmen wollen die Vorteile von Kubernetes nutzen und ihre Anwendungen modernisieren und sie gleichzeitig in verschiedenen Rechenzentren ausrollen, die oft nicht mit der Außenwelt verbunden sind. Hier kommt Klusterkit ins Spiel, das die Bereitstellung und Verwaltung von K8s-Clustern in physisch isolierten Umgebungen erleichtert.

Klusterkit umfasst drei unabhängige Tools, die zusammen oder separat verwendet werden können, um den Lebenszyklus eines Kubernetes-Produktionsclusters zu verwalten:

  1. etcdadm, CLI für vereinfachtes etcd-Cluster-Management.
  2. nodeadm, eine CLI für die Knotenverwaltung, die kubeadm erweitert und die von kubeadm benötigten Abhängigkeiten bereitstellt.
  3. cctl, ein Cluster-Lifecycle-Management-Tool, das die Cluster-API der Kubernetes-Community übernimmt und nodeadm und etcdadm verwendet, um hochverfügbare Kubernetes-Cluster in lokalen und sogar physisch isolierten Umgebungen nahtlos bereitzustellen und zu verwalten.

Zusammen führen diese drei Tools die folgenden Aufgaben aus:

  • Einfache Bereitstellung und Verwaltung eines hochverfügbaren etcd-Clusters und eines Kubernetes-Dashboards in physisch isolierten lokalen Umgebungen über die Cluster-API.
  • Wiederherstellen der Cluster-Systemsteuerung nach einem Fehler mithilfe von etcd-Backup.
  • Packen aller Artefakte, die für die Bereitstellung von Kubernetes in physisch isolierten Umgebungen erforderlich sind.

Klusterkit-Funktionen

  • Multi-Master-Unterstützung (HA-Cluster K8s).
  • Bereitstellung und Verwaltung sicherer etcd-Cluster.
  • Arbeiten in physisch isolierten Umgebungen.
  • Unterstützt fortlaufende Upgrades und Rollbacks.
  • Flannel (vxlan) als CNI für das Backend; Es gibt Pläne, weitere CNIs zu unterstützen.
  • Sicherung und Wiederherstellung von etcd-Clustern nach Verlust des Quorums.
  • Schützt das Bedienfeld davor, dass ihm der Speicher und die CPU-Zeit ausgehen.

Klusterkit-Lösungsarchitektur

KlusterKit

Aus Gründen der Fehlertoleranz und Einfachheit verwendet Klusterkit eine einzige cctl-state.yaml-Datei zum Speichern von Kubernetes-Cluster-Metadaten. Über die cctl-CLI können Sie den Lebenszyklus eines Kubernetes-Clusters auf jedem Computer verwalten, der über diese Statusdatei verfügt. Dabei kann es sich um den Laptop eines Bedieners oder einen beliebigen anderen Computer handeln, der Teil des Kubernetes-Clusters ist.

Cctl implementiert und ruft die Cluster-API-Schnittstelle vom Upstream als Bibliothek für CRUD-Operationen auf Clustern auf. Er benutzt SSH-Anbieter, ein Open-Source-Bare-Metal-Cluster-API-Anbieter von Platform9, der wiederum etcdadm und nodeadm aufruft, um Vorgänge auf dem Cluster auszuführen.

So verwenden Sie Klusterkit und seine Komponenten:

1 – Jedes der drei Tools kann einfach mit dem Befehl go get gesammelt werden:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

go get -u github.com/kubernetes-sigs/etcdadm

2 – Diese ausführbaren Dateien können dann gepackt und auf die Zielmaschinen kopiert werden, auf denen der hochverfügbare Kubernetes-Cluster ausgeführt 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 Sie einen Kubernetes-Cluster lokal in einer physisch isolierten Umgebung orchestrieren müssen, können die erforderlichen Abhängigkeiten einfach im Voraus auf einen Computer mit Internetzugang heruntergeladen werden, indem Sie die Befehle „nodeadm“ und „etcdadm download“ verwenden. Anschließend können die heruntergeladenen Elemente (d. h. Kubelet und Kubelet-Unit-Datei für systemd, ausführbare CNI-Dateien, kubeadm-Datei, alle Container-Images einschließlich Kubernetes, Keepalived-Image und Systemd-Datei, etcd-Container-Image und entsprechende Konfigurationsdateien) problemlos auf physisch isolierte Hosts kopiert werden mit cctl, nodeadm und etcdadm. (Siehe Details in Wiki).

4 – Sobald alles vorhanden ist, können Sie mit ein paar Befehlen den ersten Kubernetes-Cluster erstellen:

– Erstellen Sie zunächst Anmeldeinformationen für den Cluster.

$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa

– Erstellen Sie dann ein Clusterobjekt. –help ruft eine Liste der unterstützten Optionen auf.

$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24

– Erstellen Sie abschließend die erste Maschine im Cluster.

$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master

Weitere Dokumentation finden Sie unter GitHub.

Source: habr.com

Kommentar hinzufügen