KlusterKit: een set open-source tools voor het vereenvoudigen van Kubernetes-deployments en het werken in fysiek geïsoleerde lokale omgevingen.

Vandaag zijn we verheugd aan te kondigen dat Platform9 de broncode van Klusterkit, een set van drie tools, vrijgeeft onder de Apache v2.0-licentie op GitHub.
Onze klanten implementeren software in private datacenters die vaak niet verbonden zijn met het internet (om veiligheidsredenen of andere redenen). Deze grote bedrijven willen de voordelen van Kubernetes benutten en hun toepassingen moderniseren terwijl ze deze in verschillende datacenters implementeren, waarvan er vaak geen verbinding is met de buitenwereld. En hier komt Klusterkit om de hoek kijken, dat de levering en het beheer van K8s-clusters in fysiek geïsoleerde omgevingen vereenvoudigt.
Klusterkit bevat drie onafhankelijke tools die samen of afzonderlijk kunnen worden gebruikt om de levenscyclus van een production Kubernetes-cluster te beheren:
- , een CLI voor vereenvoudigd clusterbeheer van etcd.
- , een CLI voor het beheer van nodes, dat kubeadm aanvult en afhankelijkheden implementeert die kubeadm nodig heeft.
- , een cluster levenscyclusbeheertool die de Cluster API van de Kubernetes-gemeenschap aanneemt en nodeadm en etcdadm gebruikt om probleemloos hoogbeschikbare Kubernetes-clusters te leveren en te onderhouden in lokale en fysiek geïsoleerde omgevingen.
Samen voeren deze drie tools de volgende taken uit:
- Eenvoudige levering en beheer van een hoogbeschikbaar etcd-cluster en Kubernetes-dashboard in fysiek geïsoleerde lokale omgevingen via Cluster API.
- Herstel van het clusterdashboard na uitval met behulp van een etcd-back-up.
- Verpakking van alle artefacten die nodig zijn voor de levering van Kubernetes in fysiek geïsoleerde omgevingen.
Mogelijkheden van Klusterkit
- Ondersteuning voor meerdere masters (HA-cluster K8s).
- Levering en beheer van beveiligde etcd-clusters.
- Werken in fysiek geïsoleerde omgevingen.
- Ondersteuning voor sequentiële updates en terugrollingen.
- Flannel (vxlan) als CNI voor de backend; gepland is de ondersteuning van andere CNI.
- Back-up en herstel van etcd-clusters na verlies van quorum.
- Bescherming van het dashboard tegen geheugen- en CPU-tekort.
Architectuur van de Klusterkit-oplossing
Voor betrouwbaarheid en eenvoud gebruikt Klusterkit één bestand cctl-state.yaml voor het opslaan van metadata van de Kubernetes-cluster. Via de cctl CLI kan de levenscyclus van de Kubernetes-cluster op elke machine worden beheerd waar dit statusbestand aanwezig is. Dit kan een laptop van de operator zijn of elke andere computer die deel uitmaakt van de Kubernetes-cluster.
Cctl implementeert en roept vanuit upstream de cluster-api-interface aan als een bibliotheek voor CRUD-bewerkingen op clusters. Het gebruikt , een open-source cluster-api-provider op 'bare metal' van Platform9, die op zijn beurt etcdadm en nodeadm aanroept om bewerkingen op de cluster uit te voeren.
Hoe Klusterkit en zijn componenten te gebruiken:
1 – Een van de drie tools kan eenvoudig worden gebouwd met het commando go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Vervolgens kunnen deze uitvoerbare bestanden worden verpakt en gekopieerd naar de doelmachines, waar de hoog-beschikbare Kubernetes-cluster moet draaien. Plaats de bestanden nodeadm en etcdadm in de versiedirectorie:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Indien nodig kunt u de Kubernetes-cluster lokaal orkestreren in een fysiek geïsoleerde omgeving. De benodigde afhankelijkheden kunnen eenvoudig van tevoren worden gedownload op een computer met internettoegang met behulp van de downloadcommando's voor nodeadm en etcdadm. Vervolgens kunnen de gedownloade items (d.w.z. kubelet en het kubelet-unitbestand voor systemd, executable CNI-bestanden, kubeadm-bestand, alle containerafbeeldingen, inclusief Kubernetes, keepalived-afbeelding en systemd-bestand, etcd-containerafbeelding en bijbehorende configuratiebestanden) eenvoudig naar fysiek geïsoleerde hosts worden gekopieerd, samen met cctl, nodeadm en etcdadm. (Zie details in ).
4 – Wanneer alles op zijn plaats is, kan de eerste Kubernetes-cluster worden gemaakt met een paar commando's:
– Eerst maakt u de inloggegevens voor de cluster aan.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsa– Vervolgens maakt u een clusterobject aan. –help roept de lijst met ondersteunde parameters op.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Tot slot maakt u de eerste machine in de cluster aan.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterMeer documentatie vindt u op .
Bron: habr.com
