Klusterkit

KlusterKit: Ein Open Source-Toolkit zur Vereinfachung der Kubernetes-Bereitstellung und zur Arbeit in physisch isolierten lokalen Umgebungen



Wir freuen uns, Ihnen heute mitteilen zu können, dass Platform9 den Quellcode für Klusterkit, ein Kit mit drei Tools, unter der Apache v2.0-Lizenz auf GitHub öffnet.


Unsere Kunden führen Software in privaten Rechenzentren ein, die häufig nicht mit dem Internet verbunden sind (aus Sicherheitsgründen oder aus anderen Gründen). Diese großen Unternehmen möchten Kubernetes nutzen, ihre Anwendungen modernisieren und sie gleichzeitig in verschiedenen Rechenzentren bereitstellen, die häufig keine Verbindung zur Außenwelt haben. Und hier kommt Klusterkit zur Rettung, was die Bereitstellung und Verwaltung von K8-Clustern in physisch isolierten Umgebungen vereinfacht.


Klusterkit enthält drei unabhängige Tools, die zusammen oder getrennt zur Verwaltung des Lebenszyklus des Kubernetes-Produktionsclusters verwendet werden können:


  1. etcdadm , CLI für vereinfachte Clusterverwaltung etcd.
  2. nodeadm , eine Knotenverwaltungs-CLI, die kubeadm ergänzt und die von kubeadm benötigten Abhängigkeiten bereitstellt.
  3. cctl , ein Tool zur Verwaltung des Cluster-Lebenszyklus, das die Cluster-API aus der Kubernetes-Community akzeptiert und nodeadm und etcdadm verwendet, um hochverfügbare Kubernetes-Cluster in lokalen und sogar physisch isolierten Umgebungen einfach bereitzustellen und zu warten.

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


  • Versenden und verwalten Sie den hochverfügbaren etcd-Cluster und das Kubernetes-Kontrollfeld problemlos in physisch isolierten lokalen Umgebungen über die Cluster-API.
  • Stellen Sie die Cluster-Systemsteuerung nach einem Fehler mithilfe der etcd-Sicherung wieder her.
  • Verpacken aller Artefakte, die zur Bereitstellung von Kubernetes in physisch isolierten Umgebungen erforderlich sind.

Klusterkit-Funktionen


  • Unterstützung mehrerer Assistenten (K8s HA-Cluster).
  • Bereitstellung und Verwaltung sicherer Cluster etcd
  • Arbeiten Sie in physisch isolierten Umgebungen.
  • Unterstützt sequentielles Update und Rollback.
  • Flanell (vxlan) als CNI für das Backend; plant, andere CNI zu unterstützen.
  • Sichern und Wiederherstellen von etcd-Clustern nach Verlust eines Quorums.
  • Schützt das Bedienfeld vor Speichermangel und CPU-Zeit.

Klusterkit-Lösungsarchitektur



Aus Gründen der Fehlertoleranz und Einfachheit verwendet Klusterkit eine einzelne 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 mit dieser Statusdatei verwalten. Dies kann ein Laptop eines Bedieners oder ein anderer Computer sein, der Teil eines Kubernetes-Clusters ist.


Cctl implementiert und ruft die Upstream-Schnittstelle cluster-api als Bibliothek von CRUD-Operationen für Cluster auf. Es verwendet ssh-provider , einen Open-Source-Bare-Metal-Cluster-API- Anbieter von Platform9, der wiederum etcdadm und nodeadm aufruft, um Operationen am Cluster auszuführen.


Verwendung von Klusterkit und seinen Komponenten:


1 - Jedes der drei Werkzeuge kann einfach mit dem Befehl go get zusammengebaut 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 gepackt und auf die Zielcomputer kopiert werden, auf denen der Kubernetes-Cluster mit hohem Zugriff ausgeführt werden soll. Fügen Sie die Dateien nodeadm und etcdadm in die Versionsverzeichnisse ein:


 cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm// 

3 - Orchestrieren Sie bei Bedarf einen Kubernetes-Cluster lokal in einer physisch isolierten Umgebung. Die erforderlichen Abhängigkeiten können mit dem Befehl nodeadm und etcdadm download einfach im Voraus auf einen Computer mit Internetzugang heruntergeladen werden. Dann können die heruntergeladenen Elemente (d. H. Kubelet und die Kubelet-Einheitendatei für systemd, ausführbare CNI-Datei, kubeadm-Datei, alle Container-Images, einschließlich Kubernetes, Keepalived-Image und systemd-Datei, Container-Image usw. und entsprechende Konfigurationsdateien) leicht kopiert werden physisch isolierte Hosts zusammen mit cctl, nodeadm und etcdadm. (Einzelheiten finden Sie im Wiki ).


4 - Wenn alles vorhanden ist, können Sie den ersten Kubernetes-Cluster mit einigen Befehlen erstellen:


- Erstellen Sie zuerst Anmeldeinformationen für den Cluster.


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

- Erstellen Sie dann ein Clusterobjekt. –Hilfe hilft die 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 den ersten Computer im Cluster.


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

Lesen Sie mehr Dokumentation auf GitHub .

Source: https://habr.com/ru/post/de449214/


All Articles