KlusterKit: un set de instrumente cu sursă deschisă pentru simplificarea desfășurării Kubernetes și a funcționării în medii locale fizic izolate

Astăzi anunțăm cu bucurie că Platform9 deschide codurile sursă ale Klusterkit, un set format din trei instrumente, sub licența Apache v2.0 pe GitHub.
Clienții noștri desfășoară software în centre de date private, care adesea nu sunt conectate la internet (din motive de securitate sau din alte motive). Aceste mari companii doresc să beneficieze de avantajele Kubernetes și să își modernizeze aplicațiile, desfășurându-le în diferite centre de date, care nu au adesea conexiune cu lumea exterioară. Și aici intervine Klusterkit, care simplifică livrarea și gestionarea clusterelor K8s în medii fizic izolate.
Klusterkit include trei instrumente independente, care pot fi utilizate împreună sau separat pentru gestionarea ciclului de viață al unui cluster Kubernetes în producție:
- , CLI pentru gestionarea simplificată a clusterului etcd.
- , CLI pentru administrarea nodurilor, care completează kubeadm și desfășoară dependențele necesare kubeadm.
- , un instrument de gestionare a ciclului de viață al clusterului, care acceptă Cluster API din comunitatea Kubernetes și utilizează nodeadm și etcdadm pentru a livra și menține fără probleme clustere Kubernetes cu disponibilitate ridicată în medii locale, inclusiv fizic izolate.
Împreună, aceste trei instrumente îndeplinesc următoarele sarcini:
- Desfășurarea și gestionarea simplă a unui cluster etcd cu disponibilitate ridicată și a panoului de control Kubernetes în medii fizic izolate prin Cluster API.
- Restaurarea panoului de control al clusterului după o defecțiune cu ajutorul unui backup etcd.
- Ambalarea tuturor artefactelor necesare pentru desfășurarea Kubernetes în medii fizic izolate.
Funcționalitățile Klusterkit
- Suport pentru mai multe mastere (cluster K8s HA).
- Desfășurarea clusterelor etcd protejate și gestionarea lor.
- Funcționare în medii fizic izolate.
- Suport pentru actualizări și reveniri secvențiale.
- Flannel (vxlan) ca CNI pentru backend; planificată suportarea altor CNI.
- Rezervare și restaurare a clusterelor etcd după pierderea cvorumului.
- Protejarea panoului de control împotriva lipsei de memorie și timp CPU.
Arhitectura soluției Klusterkit
Pentru redundanță și simplitate, Klusterkit utilizează un singur fișier cctl-state.yaml pentru a stoca metadatele cluster-ului Kubernetes. Prin cctl CLI, se poate gestiona ciclul de viață al cluster-ului Kubernetes pe orice mașină care dispune de acest fișier de stare. Poate fi un laptop al operatorului sau orice alt computer care face parte din cluster-ul Kubernetes.
CCTL implementează și invocă din upstream interfața cluster-api ca o bibliotecă de operații CRUD pentru clustere. Acesta folosește , un furnizor cluster-api open-source pe „hardware brut” de la Platform9, care la rândul său, invocă etcdadm și nodeadm pentru a efectua operații pe cluster.
Cum să folosești Klusterkit și componentele sale:
1 – Oricare dintre cele trei instrumente poate fi ușor construit cu comanda go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Apoi aceste fișiere executabile pot fi ambalate și copiate pe mașinile țintă, unde trebuie să funcționeze un cluster Kubernetes de înaltă disponibilitate. Plasați fișierele nodeadm și etcdadm în directoarele versiunilor:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Dacă este necesar să orchestrezi cluster-ul Kubernetes local, într-un mediu fizic izolat, dependențele necesare pot fi ușor descărcate în prealabil pe un computer cu acces la internet folosind comanda de descărcare nodeadm și etcdadm. Apoi elementele descărcate (adică kubelet și fișierul unit kubelet pentru systemd, fișierele executabile CNI, fișierul kubeadm, toate imaginile containerelor, inclusiv Kubernetes, imaginea keepalived și fișierul systemd, imaginea containerului etcd și fișierele de configurare corespunzătoare) pot fi ușor copiate pe gazdele fizic izolate, împreună cu cctl, nodeadm și etcdadm. (Detalii în ).
4 – Când totul este la locul său, primul cluster Kubernetes poate fi creat folosind câteva comenzi:
– Mai întâi, creează acreditivele pentru cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~//.ssh/id_rsa– Apoi creează obiectul cluster-ului. –help invocă lista parametrilor acceptați.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– În cele din urmă, creează prima mașină în cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterPentru mai multe documentații, consultați .
Sursa: habr.com
