KlusterKit

KlusterKit: Isang open source toolkit upang pasimplehin ang mga pag-deploy ng Kubernetes at tumakbo sa mga pisikal na nakahiwalay na on-premises na kapaligiran

KlusterKit

Ngayon ay nasasabik kaming ipahayag na ang Platform9 ay open sourcing Klusterkit, isang suite ng tatlong tool, sa ilalim ng lisensya ng Apache v2.0 sa GitHub.

Ang aming mga kliyente ay naglalabas ng software sa mga pribadong data center na kadalasang hindi nakakonekta sa Internet (para sa seguridad o iba pang dahilan). Gusto ng malalaking kumpanyang ito na samantalahin ang Kubernetes at gawing moderno ang kanilang mga aplikasyon at kasabay nito ay i-roll out ang mga ito sa iba't ibang data center, na kadalasang hindi konektado sa labas ng mundo. Dito pumapasok ang Klusterkit, na ginagawang madali ang pagbibigay at pamamahala ng mga K8s cluster sa mga pisikal na nakahiwalay na kapaligiran.

Kasama sa Klusterkit ang tatlong independiyenteng tool na maaaring gamitin nang magkasama o magkahiwalay para pamahalaan ang lifecycle ng isang production cluster ng Kubernetes:

  1. etcdadm, CLI para sa pinasimpleng etcd cluster management.
  2. nodeadm, isang CLI para sa node administration na nagpapalawak ng kubeadm at nagde-deploy ng mga dependency na kailangan ng kubeadm.
  3. cctl, isang tool sa pamamahala ng cluster lifecycle na gumagamit ng Cluster API mula sa komunidad ng Kubernetes at gumagamit ng nodeadm at etcdadm para maayos na maihatid at mapanatili ang mga available na cluster ng Kubernetes sa mga nasa lugar at maging sa mga pisikal na nakahiwalay na kapaligiran.

Magkasama, ginagawa ng tatlong tool na ito ang mga sumusunod na gawain:

  • Madaling ibigay at pamahalaan ang isang mataas na available na etcd cluster at Kubernetes dashboard sa mga pisikal na nakahiwalay na on-premises na kapaligiran sa pamamagitan ng Cluster API.
  • Pagpapanumbalik ng cluster control panel pagkatapos ng pagkabigo gamit ang etcd backup.
  • Pag-iimpake ng lahat ng artifact na kailangan upang maihatid ang mga Kubernetes sa mga pisikal na nakahiwalay na kapaligiran.

Mga tampok ng Klusterkit

  • Multi-master na suporta (HA cluster K8s).
  • Paghahatid at pamamahala ng mga secure na etcd cluster.
  • Nagtatrabaho sa mga pisikal na nakahiwalay na kapaligiran.
  • Sinusuportahan ang mga rolling upgrade at rollback.
  • Flannel (vxlan) bilang CNI para sa backend; May mga planong suportahan ang iba pang mga CNI.
  • Pag-backup at pagpapanumbalik ng etcd cluster pagkatapos ng pagkawala ng quorum.
  • Pinoprotektahan ang control panel mula sa pagkaubos ng memorya at oras ng CPU.

Arkitektura ng Klusterkit Solution

KlusterKit

Para sa fault tolerance at pagiging simple, gumagamit ang Klusterkit ng iisang cctl-state.yaml file upang mag-imbak ng metadata ng cluster ng Kubernetes. Sa pamamagitan ng cctl CLI maaari mong pamahalaan ang lifecycle ng isang Kubernetes cluster sa anumang machine na may ganitong state file. Maaari itong maging laptop ng operator o anumang iba pang computer na bahagi ng cluster ng Kubernetes.

Ipinapatupad at tinatawag ng Cctl ang interface ng cluster-api mula sa upstream bilang isang library para sa mga pagpapatakbo ng CRUD sa mga cluster. Ginagamit niya ssh-provider, isang open-source bare metal cluster-api provider mula sa Platform9, na tumatawag naman sa etcdadm at nodeadm para magsagawa ng mga operasyon sa cluster.

Paano gamitin ang Klusterkit at ang mga bahagi nito:

1 – Ang alinman sa tatlong tool ay madaling makolekta gamit ang go get command:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

go get -u github.com/kubernetes-sigs/etcdadm

2 – Ang mga executable na ito ay maaaring ma-package at makopya sa mga target na makina kung saan dapat na tumatakbo ang mataas na available na Kubernetes cluster. Ilagay ang mga nodeadm at etcdadm file sa mga direktoryo ng bersyon:

cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//

cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//

3 – Kung kailangan mong mag-orchestrate ng Kubernetes cluster nang lokal, sa isang pisikal na nakahiwalay na kapaligiran, ang mga kinakailangang dependency ay madaling ma-download nang maaga sa isang computer na may Internet access gamit ang nodeadm at etcdadm download command. Pagkatapos, ang mga na-download na item (i.e. kubelet at kubelet unit file para sa systemd, CNI executable file, kubeadm file, lahat ng container images kasama ang Kubernetes, keepalived image at systemd file, etcd container image at kaukulang configuration file) ay madaling makopya sa mga physically isolated hosts kasama na may cctl, nodeadm at etcdadm. (Tingnan ang mga detalye sa wiki).

4 – Kapag nasa lugar na ang lahat, maaari kang lumikha ng unang Kubernetes cluster na may ilang command:

– Gumawa muna ng mga kredensyal para sa cluster.

$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa

– Pagkatapos ay lumikha ng isang cluster object. –naglalabas ang tulong ng isang listahan ng mga sinusuportahang opsyon.

$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24

– Panghuli, lumikha ng unang makina sa cluster.

$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master

Magbasa ng higit pang dokumentasyon sa GitHub.

Pinagmulan: www.habr.com

Magdagdag ng komento