KlusterKit

KlusterKit: ein Open-Source-Toolkit zur Vereinfachung von Kubernetes-Deployments und Betrieb in physisch isolierten lokalen Umgebungen

KlusterKit

Heute freuen wir uns bekanntzugeben, dass Platform9 den Quellcode von Klusterkit, einem Set aus drei Werkzeugen, unter der Lizenz Apache v2.0 auf GitHub veröffentlicht.

Unsere Kunden führen Software in privaten Rechenzentren aus, die häufig nicht mit dem Internet verbunden sind (aus Sicherheitsgründen oder aus anderen Gründen). Diese großen Unternehmen möchten die Vorteile von Kubernetes nutzen und ihre Anwendungen modernisieren sowie sie in verschiedenen Rechenzentren bereitstellen, die oft 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 umfasst drei unabhängige Werkzeuge, die zusammen oder einzeln verwendet werden können, um den Lebenszyklus eines Produktions-Kubernetes-Clusters zu verwalten:

  1. etcdadm, CLI zur vereinfachten Verwaltung des etcd-Clusters.
  2. nodeadm, CLI zur Verwaltung von Knoten, das kubeadm ergänzt und die für kubeadm erforderlichen Abhängigkeiten bereitstellt.
  3. cctl, ein Cluster-Lifecycle-Management-Tool, das die Cluster-API der Kubernetes-Community übernimmt und nodeadm sowie etcdadm nutzt, um mühelos hochverfügbare Kubernetes-Cluster in lokalen und physisch isolierten Umgebungen bereitzustellen und zu warten.

Zusammen erfüllen diese drei Werkzeuge die folgenden Aufgaben:

  • Einfache Bereitstellung und Verwaltung eines hochverfügbaren etcd-Clusters und des Kubernetes-Dashboards in physisch isolierten lokalen Umgebungen durch 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 von sequenziellen Updates und Rollbacks.
  • Flannel (vxlan) als CNI für das Backend; Unterstützung weiterer CNIs ist geplant.
  • Wiederherstellung und Wiederherstellung von etcd-Clustern nach Verlust der Quorumfähigkeit.
  • Schutz des Dashboards vor speicher- und CPU-Mangel.

Architektur der Klusterkit-Lösung

KlusterKit

Für Zuverlässigkeit und Einfachheit verwendet Klusterkit eine Datei cctl-state.yaml zur Speicherung der Metadaten des Kubernetes-Clusters. Über die cctl CLI kann der Lebenszyklus des Kubernetes-Clusters auf jedem Computer verwaltet werden, auf dem sich diese Zustandsdatei befindet. Dies kann der Laptop des Betreibers oder ein anderer Computer sein, der Teil des Kubernetes-Clusters ist.

Cctl implementiert und ruft aus dem Upstream die Schnittstelle cluster-api als Bibliothek für CRUD-Operationen auf Clustern auf. Es verwendet ssh-provider, einen Open-Source-Cluster-API-Anbieter auf „nackter Hardware“ von Platform9, der wiederum etcdadm und nodeadm zum Ausführen von Operationen im Cluster aufruft.

So verwenden Sie Klusterkit und seine Komponenten:

1 – Jedes der drei Werkzeuge kann einfach mit dem Befehl go get kompiliert werden:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

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

2 – 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, den Kubernetes-Cluster lokal in einer physisch isolierten Umgebung zu orchestrieren, können die erforderlichen Abhängigkeiten einfach im Voraus auf einem mit dem Internet verbundenen Computer mit dem Nodeadm- und Etcdadm-Download-Befehl heruntergeladen werden. Anschließend können die heruntergeladenen Elemente (d.h. kubelet und kubelet-Systemd-Einheitendatei, ausführbare CNI-Dateien, kubeadm-Datei, alle Container-Images, einschließlich Kubernetes, das keepalived-Image und die systemd-Datei, das etcd-Image und die entsprechenden Konfigurationsdateien) problemlos auf physisch isolierte Hosts kopiert werden, zusammen mit cctl, nodeadm und etcdadm. (Details siehe wiki).

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 Clusterobjekt. –help gibt eine Liste der unterstützten Parameter aus.

$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 master

Weitere Dokumentationen finden Sie auf GitHub.

Quelle: habr.com

60GB SSD 8Gb DDR4