KlusterKit: skup alata s otvorenim kodom za pojednostavljenje implementacija Kubernetes i rad u fizički izoliranim lokalnim okruženjima

Danas s radošću objavljujemo da Platform9 otvara izvornu šifru Klusterkita, skupa od tri alata, pod Apache v2.0 licencom na GitHubu.
Naši klijenti implementiraju softver u privatnim data centrima koji često nisu povezani s internetom (iz sigurnosnih razloga ili iz drugih razloga). Ove velike tvrtke žele iskoristiti prednosti Kubernetesa i modernizirati svoje aplikacije, a istovremeno ih implementirati u različite data centre koji često nemaju vezu s vanjskim svijetom. Tu na scenu stupa Klusterkit, koji pojednostavljuje isporuku i upravljanje K8s klasterima u fizički izoliranim okruženjima.
Klusterkit se sastoji od tri neovisna alata koja se mogu koristiti zajedno ili odvojeno za upravljanje životnim ciklusom proizvodnog klastera Kubernetesa:
- , CLI za pojednostavljeno upravljanje klasterom etcd.
- , CLI za administraciju nodova, koji dopunjuje kubeadm i implementira ovisnosti potrebne kubeamdu.
- , alat za upravljanje životnim ciklusom klastera, koji prihvaća Cluster API iz zajednice Kubernetesa i koristi nodeadm i etcdadm kako bi bez napora isporučivao i održavao visoko dostupne klastere Kubernetesa u lokalnim i fizički izoliranim okruženjima.
Zajedno, ova tri alata obavljaju sljedeće zadatke:
- Jednostavna isporuka i upravljanje visoko dostupnim klasterom etcd i upravljačkom pločom Kubernetesa u fizički izoliranim lokalnim okruženjima putem Cluster API-ja.
- Obnova upravljačke ploče klastera nakon kvara pomoću sigurnosne kopije etcd.
- Pakiranje svih artefakata potrebnih za isporuku Kubernetesa u fizički izoliranim okruženjima.
Mogućnosti Klusterkita
- Podrška za više glavnih čvorova (HA-klaster K8s).
- Isporuka sigurnih klastera etcd i upravljanje njima.
- Rad u fizički izoliranim okruženjima.
- Podrška za sekvencijalno ažuriranje i vraćanje.
- Flannel (vxlan) kao CNI za backend; planira se podrška za druge CNI.
- Rezerve i obnova etcd-klastera nakon gubitka kvoruma.
- Zaštita upravljačke ploče od nedostatka memorije i procesorskog vremena.
Arhitektura rješenja Klusterkit
Za otpornost i jednostavnost, Klusterkit koristi jednu datoteku cctl-state.yaml za pohranu metapodataka Kubernetes klastera. Putem cctl CLI-a može se upravljati životnim ciklusom Kubernetes klastera na bilo kojem računalu na kojem se nalazi ova datoteka stanja. To može biti operatorov prijenosnik ili bilo koje drugo računalo koje pripada Kubernetes klasteru.
Cctl implementira i poziva iz upstream sučelje cluster-api kao biblioteku CRUD operacija na klasterima. Koristi , dobavljač cluster-api s otvorenim kodom na "golem" hardveru od Platform9, koji, zauzvrat, poziva etcdadm i nodeadm za izvršavanje operacija na klasteru.
Kako koristiti Klusterkit i njegove komponente:
1 – Bilo koji od tri alata može se lako prikupiti naredbom go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Zatim se ovi izvršni datoteci mogu upakirati i kopirati na ciljne strojeve gdje bi trebao raditi visoko dostupni Kubernetes klaster. Stavite datoteke nodeadm i etcdadm u direktorije verzija:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Ako je potrebno orkestrirati Kubernetes klaster lokalno, u fizički izoliranom okruženju, potrebne ovisnosti se mogu lako unaprijed preuzeti na računalu s pristupom internetu pomoću naredbe za preuzimanje nodeadm i etcdadm. Zatim se preuzeti elementi (tj. kubelet i kubelet jedinica datoteka za systemd, izvršne datoteke CNI, kubeadm datoteka, svi kontejnerski imidži, uključujući Kubernetes, imidž keepalived i datoteka systemd, imidž kontejnera etcd i odgovarajuće datoteke konfiguracije) mogu lako kopirati na fizički izolirane hostove zajedno s cctl, nodeadm i etcdadm. (Detalje pogledajte u ).
4 – Kada je sve na svom mjestu, prvi Kubernetes klaster može se stvoriti s nekoliko naredbi:
– Prvo stvorite vjerodajnice za klaster.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsa– Zatim stvorite objekt klastera. –help poziva popis podržanih parametara.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Na kraju, stvorite prvu mašinu u klasteru.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterViše dokumentacije pročitajte na .
Izvor: habr.com
