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

Додати коментар або відгук