KlusterKit: zestaw narzędzi open source, który upraszcza wdrażanie Kubernetes i pracę w fizycznie izolowanych lokalnych środowiskach

Z radością ogłaszamy, że Platform9 otwiera źródła Klusterkit, zestawu trzech narzędzi, na licencji Apache v2.0 na GitHubie.
Nasi klienci wdrażają oprogramowanie w prywatnych centrach danych, które często nie są podłączone do internetu (ze względów bezpieczeństwa lub innych przyczyn). Te duże firmy chcą korzystać z zalet Kubernetes i modernizować swoje aplikacje, jednocześnie wdrażając je w różnych centrach danych, które często nie mają połączenia ze światem zewnętrznym. Właśnie tutaj Klusterkit przychodzi na pomoc, upraszczając dostarczanie i zarządzanie klastrami K8s w fizycznie izolowanych środowiskach.
W skład Klusterkit wchodzą trzy niezależne narzędzia, które można używać razem lub osobno do zarządzania cyklem życia klastra produkcyjnego Kubernetes:
- , CLI do uproszczonego zarządzania klastrem etcd.
- , CLI do administracji węzłami, który uzupełnia kubeadm i wdraża zależności potrzebne kubeadm.
- , narzędzie do zarządzania cyklem życia klastra, które przyjmuje Cluster API ze społeczności Kubernetes i wykorzystuje nodeadm oraz etcdadm, aby bezproblemowo dostarczać i utrzymywać wysoko dostępne klastry Kubernetes w lokalnych oraz fizycznie izolowanych środowiskach.
Razem te trzy narzędzia wykonują następujące zadania:
- Proste dostarczanie i zarządzanie wysoko dostępnym klastrem etcd oraz panelem zarządzania Kubernetes w fizycznie izolowanych lokalnych środowiskach poprzez Cluster API.
- Przywracanie panelu zarządzania klastrem po awarii za pomocą kopii zapasowej etcd.
- Pakowanie wszystkich artefaktów potrzebnych do wdrożenia Kubernetes w fizycznie izolowanych środowiskach.
Możliwości Klusterkit
- Wsparcie dla wielu masterów (HA-klaster K8s).
- Dostarczanie i zarządzanie zabezpieczonymi klastrami etcd.
- Praca w fizycznie izolowanych środowiskach.
- Wsparcie dla sekwencyjnego aktualizowania i wycofywania.
- Flannel (vxlan) jako CNI dla backendu; planowane wsparcie dla innych CNI.
- Rezerwacja i przywracanie klastrów etcd po utracie kworum.
- Ochrona panelu zarządzania przed brakiem pamięci i czasu CPU.
Architektura rozwiązania Klusterkit
Aby zapewnić odporność i prostotę, Klusterkit wykorzystuje jeden plik cctl-state.yaml do przechowywania metadanych klastra Kubernetes. Za pomocą cctl CLI można zarządzać cyklem życia klastra Kubernetes na dowolnej maszynie, na której znajduje się ten plik stanu. Może to być komputer operatora lub inny komputer, który wchodzi w skład klastra Kubernetes.
Cctl implementuje i wywołuje interfejs cluster-api jako bibliotekę operacji CRUD na klastrach. , dostawcę cluster-api z otwartym kodem źródłowym działającego na „gołym żelazie” od Platform9, który z kolei wywołuje etcdadm i nodeadm do wykonywania operacji na klastrze.
Jak korzystać z Klusterkit i jego komponentów:
1 – Każde z trzech narzędzi można łatwo pobrać za pomocą komendy go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Następnie te pliki wykonywalne można spakować i skopiować na docelowe maszyny, na których ma działać wysoko dostępny klaster Kubernetes. Umieść pliki nodeadm i etcdadm w katalogach wersji:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – W razie potrzeby, aby orkiestracja klastra Kubernetes odbywała się lokalnie, w fizycznie odizolowanym środowisku, potrzebne zależności można łatwo pobrać wcześniej na komputerze z dostępem do internetu, używając komendy load nodeadm i etcdadm. Następnie pobrane elementy (tj. kubelet i plik jednostki kubelet dla systemd, pliki wykonywalne CNI, plik kubeadm, wszystkie obrazy kontenerów, w tym Kubernetes, obraz keepalived oraz plik systemd, obraz kontenera etcd i odpowiednie pliki konfiguracyjne) można łatwo skopiować na fizycznie odizolowane hosty razem z cctl, nodeadm i etcdadm. (Szczegóły w ).
4 – Gdy wszystko jest na miejscu, pierwszy klaster Kubernetes można utworzyć przy użyciu kilku komend:
– Najpierw utwórz dane uwierzytelniające dla klastra.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsa– Następnie utwórz obiekt klastra. –help wywołuje listę obsługiwanych parametrów.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Na koniec utwórz pierwszą maszynę w klastrze.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterWięcej dokumentacji można znaleźć na .
Źródło: habr.com
