KlusterKit

KlusterKit: набор інструментаў з адкрытым зыходным кодам для спрашчэння дэплояў Kubernetes і працы ў фізічна ізаляваных лакальных асяроддзях.

KlusterKit

Сёння мы з радасцю аб'яўляем, што Platform9 адчыняе зыходныя коды Klusterkit, набору з трох прылад, па ліцэнзіі Apache v2.0 на GitHub.

Нашы кліенты выкочваюць ПА ў прыватных дата-цэнтрах, якія часта не падлучаныя да інтэрнэту (па меркаваннях бяспекі ці па іншых прычынах). Гэтыя буйныя кампаніі хочуць выкарыстоўваць перавагі Kubernetes і мадэрнізаваць свае прыкладанні і пры гэтым выкочваць іх у розных дата-цэнтрах, у якіх нярэдка няма сувязі з навакольным светам. І тут на дапамогу прыходзіць Klusterkit, які спрашчае пастаўку і кіраванне кластарамі K8s у фізічна ізаляваных асяроддзях.

У Klusterkit уваходзіць тры незалежныя прылады, якія можна выкарыстоўваць разам ці па асобнасці для кіравання жыццёвым цыклам production-кластара Kubernetes:

  1. etcdadm, CLI для спрошчанага кіравання кластарам etcd.
  2. nodeadm, CLI для адміністравання нод, які дапаўняе kubeadm і разгортвае залежнасці, патрэбныя kubeadm.
  3. cctl, інструмент кіравання жыццёвым цыклам кластара, які прымае Cluster API з супольнасці Kubernetes і выкарыстоўвае nodeadm і etcdadm, каб без лішніх клопатаў пастаўляць і падтрымліваць высокадаступныя кластары Kubernetes у лакальных і ў тым ліку фізічна ізаляваных асяроддзях.

Разам гэтыя тры інструменты выконваюць наступныя задачы:

  • Простая пастаўка і кіраванне высокадаступным кластарам etcd і панэллю кіравання Kubernetes у фізічна ізаляваных лакальных асяроддзях праз Cluster API.
  • Аднаўленне панэлі кіравання кластара пасля збою з дапамогай бэкапу etcd.
  • Упакоўка ўсіх артэфактаў, патрэбных для пастаўкі Kubernetes, у фізічна ізаляваных асяроддзях.

Магчымасці Klusterkit

  • Падтрымка некалькіх майстроў (HA-кластар K8s).
  • Пастаўка абароненых кластараў etcd і кіраванне імі.
  • Праца ў фізічна ізаляваных асяроддзях.
  • Падтрымка паслядоўнага абнаўлення і адкату.
  • Flannel (vxlan) у якасці CNI для бэкенда; у планах падтрымка іншых CNI.
  • Рэзерваванне і аднаўленне etcd-кластэраў пасля страты кворуму.
  • Абарона панэлі кіравання ад недахопу памяці і часу ЦП.

Архітэктура рашэння Klusterkit

KlusterKit

Для адмоваўстойлівасці і прастаты Klusterkit выкарыстоўвае адзін файл cctl-state.yaml для захоўвання метададзеных кластара Kubernetes. Праз cctl CLI можна кіраваць жыццёвым цыклам кластара Kubernetes на любой машыне, дзе есць гэты файл стану. Гэта можа быць ноўтбук аператара або любы іншы кампутар, які ўваходзіць у кластар Kubernetes.

Cctl рэалізуе і выклікае з upstream інтэрфейс cluster-api як бібліятэку аперацый CRUD на кластарах. Ён выкарыстоўвае ssh-provider, пастаўшчыка cluster-api з адкрытым зыходным кодам на "голым жалезе" ад Platform9, які, у сваю чаргу, выклікае etcdadm і nodeadm для выканання аперацый на кластары.

Як выкарыстоўваць Klusterkit і яго кампаненты:

1 – Любая з трох прылад можна лёгка сабраць камандай go get:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

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

2 – Затым гэтыя выкананыя файлы можна спакаваць і скапіяваць на мэтавыя машыны, дзе павінен працаваць высокадаступны кластар Kubernetes. Змесціце файлы nodeadm і etcdadm у каталогі версій:

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

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

3 – Пры неабходнасці аркестраваць кластар Kubernetes лакальна, у фізічна ізаляваным асяроддзі, патрэбныя залежнасці можна лёгка загрузіць загадзя на кампутары з выхадам у інтэрнэт камандай загрузкі nodeadm і etcdadm. Потым загружаныя элементы (т. е. kubelet і юніт-файл kubelet для systemd, выкананыя файл файлы CNI, файл kubeadm, усе выявы кантэйнераў, уключаючы Kubernetes, выява keepalived і файл systemd, выява кантэйнера etcd і адпаведныя файлы канфігурацыі) можна лёгка скоп фізічна ізаляваныя хасты разам з cctl, nodeadm і etcdadm. (Падрабязнасці гл. у вікі).

4 – Калі ўсё на месцы, стварыць першы кластар Kubernetes можна парай каманд:

- Спачатку стварыце уліковыя дадзеныя для кластара.

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

- Потым стварыце аб'ект кластара. –help выклікае спіс параметраў, якія падтрымліваюцца.

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

- Нарэшце, стварыце першую машыну ў кластары.

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

Больш дакументацыі чытайце на GitHub.

Крыніца: habr.com

Дадаць каментар