KlusterKit: nabor orudiy s otkrytym istochnikom dlya uproshcheniya deployev Kubernetes i raboty v fizicheski izolirovannykh lokal'nykh sredakh

Segodnya my s radost'yu ob'yavlyaem, chto Platform9 otkryvaet istochniki Klusterkit, nabora iz trekh orudiy, po lицenzии Apache v2.0 na GitHub.
Nashi klienty vykatyvayut PO v chastnykh data-tsentrah, kotorye chasto ne podklyucheny k internetu (po sobrazheniyam bezopasnosti ili po drugym prichinam). Eti krupnye kompanii khotyat ispol'zovat' preimushchestva Kubernetes i modernizirovat' svoi prilozheniya i pri etom vykatyvat' ikh v raznykh data-tsentrah, u kotorykh nonre chasto net svyazi s vneshnim mirом. I tut na pomoshch' prikhodit Klusterkit, kotoryy uproshchaet postavku i upravlenie klasterami K8s v fizicheski izolirovannykh sredakh.
V Klusterkit vkhodit tri nezavisimmikh instrumenta, kotorye mozhno ispol'zovat' vmeste ili po otdel'nosti dlya upravleniya zhiznennym tsiklom production-klastera Kubernetes:
- , CLI dlya uproshchennogo upravleniya klastrom etcd.
- , CLI dlya administrirovaniya nod, kotoryy dopolnyayet kubeadm i razvertyvayet zavisimosti, nuzhnye kubeadm.
- , instrument upravleniya zhiznennym tsiklom klastera, kotoryy prinimat Cluster API iz soobshchestva Kubernetes i ispol'zuet nodeadm i etcdadm, chtoby bez lishnikh khlopot postavlyat' i podderzhivat' vysokodostupnye klastery Kubernetes v lokal'nykh i v tom chisle fizicheski izolirovannykh sredakh.
VMeste eti tri instrumenta vypolnyayut sleduyushchie zadachi:
- Prostaya postavka i upravlenie vysokodostupnym klasterom etcd i panel'yu upravleniya Kubernetes v fizicheski izolirovannykh lokal'nykh sredakh cherez Cluster API.
- Vosstanovlenie panely upravleniya klastera posle sboya s pomoshch'yu byekapa etcd.
- Upakovka vsekh artefaktov, nuzhnykh dlya postavki Kubernetes, v fizicheski izolirovannykh sredakh.
Vozmozhnosti Klusterkit
- Podderzhka neskol'kikh masterov (HA-klaster K8s).
- Postavka zashchishchennykh klasterov etcd i upravlenie nimi.
- Rabota v fizicheski izolirovannykh sredakh.
- Podderzhka posledovatel'nogo obnovleniya i otkata.
- Flannel (vxlan) v kachestve CNI dlya bekenda; v planakh podderzhka drugikh CNI.
- Rezervirovanie i vosstanovlenie etcd-klasterov posle poteri kvoruma.
- Zashchita panely upravleniya ot nekhvatki pamyati i vremeni TsP.
Arkhitekturnye resheniya Klusterkit
Za visoko dostupnost in enostavnost Klusterkit uporablja en sam datoteko cctl-state.yaml za shranjevanje metapodatkov Kubernetes klastr. Z uporabo cctl CLI je mogoče upravljati življenjski cikel Kubernetes klastr na katerikoli napravi, kjer je ta datoteka stanja. To je lahko prenosni računalnik operaterja ali katerikoli drug računalnik, ki je del Kubernetes klastr.
Cctl implementira in kliče iz upstream vmesnika cluster-api kot knjižnico CRUD operacij na klastrih. Uporablja , dobavitelja cluster-api z odprto kodo na 'golem železu' od Platform9, ki nato kliče etcdadm in nodeadm za izvajanje operacij na klastru.
Kako uporabljati Klusterkit in njegove komponente:
1 – Katerokoli od treh orodij je mogoče enostavno zgraditi s pomočjo ukaza go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Nato je mogoče te izvršljive datoteke pakirati in kopirati na ciljne naprave, kjer naj bi deloval visoko dostopen Kubernetes klastr. Datoteke nodeadm in etcdadm postavite v različne mape:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Če je potrebno orkestrirati Kubernetes klastr lokalno, v fizično izoliranem okolju, je mogoče potrebne odvisnosti enostavno prenesti vnaprej na računalniku z dostopom do interneta z ukazom za prenos nodeadm in etcdadm. Nato lahko prenesene elemente (tj. kubelet in enotno datoteko kubelet za systemd, izvršljive datoteke CNI, datoteko kubeadm, vse slike vsebnikov, vključno s Kubernetes, sliko keepalived in datoteko systemd, sliko vsebnika etcd in ustrezne konfiguracijske datoteke) enostavno kopiramo na fizično izolirane gostitelje skupaj s cctl, nodeadm in etcdadm. (Podrobnosti si oglejte v ).
4 – Ko je vse pripravljeno, lahko prvi Kubernetes klastr ustvarite z nekaj ukazi:
– Najprej ustvarite poverilnice za klastr.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsa– Nato ustvarite objekt klastr. –help kliče seznam podprtih parametrov.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Na koncu ustvarite prvo napravo v klastru.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterVeč dokumentacije preberite na .
Izvor: habr.com
