KlusterKit: ett verktygssats med öppen källkod för att förenkla distributioner av Kubernetes och arbete i fysiskt isolerade lokala miljöer

Idag är vi glada att meddela att Platform9 öppnar källkoden för Klusterkit, en uppsättning av tre verktyg, under Apache v2.0-licensen på GitHub.
Våra kunder distribuerar programvara i privata datacenter som ofta inte är anslutna till internet (av säkerhetsskäl eller andra anledningar). Dessa stora företag vill dra nytta av Kubernetes och modernisera sina applikationer, samtidigt som de distribuerar dem i olika datacenter, som ofta saknar kontakt med omvärlden. Här kommer Klusterkit till hjälp, vilket förenklar distribution och hantering av K8s-kluster i fysiskt isolerade miljöer.
Klusterkit inkluderar tre oberoende verktyg som kan användas tillsammans eller separat för att hantera livscykeln för produktion av Kubernetes-kluster:
- , CLI för förenklad hantering av etcd-kluster.
- , CLI för administration av noder som kompletterar kubeadm och distribuerar de beroenden som krävs av kubeadm.
- , ett verktyg för hantering av klusterlivscykeln, som använder Cluster API från Kubernetes-gemenskapen och använder nodeadm och etcdadm för att enkelt distribuera och underhålla hög tillgänglighet av Kubernetes-kluster i lokala och fysiskt isolerade miljöer.
Tillsammans utför dessa tre verktyg följande uppgifter:
- Enkel distribution och hantering av hög tillgänglighet etcd-kluster och Kubernetes-övervakningspanel i fysiskt isolerade lokala miljöer via Cluster API.
- Återställning av klusterövervakningspanelen efter ett fel med hjälp av etcd-backup.
- Paketering av alla artefakter nödvändiga för distribution av Kubernetes i fysiskt isolerade miljöer.
Funktioner i Klusterkit
- Stöd för flera masterservrar (HA-kluster K8s).
- Distribution och styrning av säkra etcd-kluster.
- Arbete i fysiskt isolerade miljöer.
- Stöd för sekventiell uppgradering och nedgradering.
- Flannel (vxlan) som CNI för backend; planer på att stödja andra CNI.
- Reservdelning och återställning av etcd-kluster efter kvorumförlust.
- Skydd av övervakningspanelen mot bristande minneskapacitet och CPU-tid.
Arkitektur för Klusterkit-lösningen
För att säkerställa redundans och enkelhet använder Klusterkit en enda fil cctl-state.yaml för att lagra metadata för Kubernetes-kluster. Genom cctl CLI kan livscykeln för Kubernetes-klustret hanteras på vilken maskin som helst där denna tillståndsfil finns. Det kan vara operatörens bärbara dator eller vilken annan dator som helst som ingår i Kubernetes-klustret.
Cctl implementerar och kallar från upstream-gränssnittet cluster-api som ett bibliotek för CRUD-operationer på kluster. Den använder , en öppen källkod cluster-api-leverantör på "bare metal" från Platform9, som i sin tur kallar etcdadm och nodeadm för att utföra operationer på klustret.
Så här använder du Klusterkit och dess komponenter:
1 – Något av de tre verktygen kan enkelt samlas in med kommandot go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Dessa körbara filer kan sedan packas och kopieras till måldatorer där det högtillgängliga Kubernetes-klustret ska köras. Placera filerna nodeadm och etcdadm i versionskataloger:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Om det behövs att orkestrera Kubernetes-klustret lokalt, i en fysiskt isolerad miljö, kan nödvändiga beroenden enkelt laddas ner i förväg på en dator med internetåtkomst med hjälp av nedladdningskommandot för nodeadm och etcdadm. Sedan kan de nedladdade elementen (dvs kubelet och kubelet-enhetsfilen för systemd, körbara CNI-filer, kubeadm-filen, alla containerbilder, inklusive Kubernetes, keepalived-bilden och systemd-filen, etcd-containern och motsvarande konfigurationsfiler) enkelt kopieras till fysiskt isolerade värdar tillsammans med cctl, nodeadm och etcdadm. (Detaljer finns i ).
4 – När allt är på plats kan du skapa det första Kubernetes-klustret med ett par kommandon:
– Först skapar du ett autentiseringsutförande för klustret.
$GOPATH/bin/cctl create credential --user root --private-key ~/\.ssh/id_rsa– Skapa sedan ett klusterobjekt. –help listar de stödja parametrarna.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Slutligen skapar du den första maskinen i klustret.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterMer dokumentation finns på .
Källa: habr.com
