KlusterKit: набір інструментів з відкритим вихідним кодом для спрощення деплоїв Kubernetes та роботи у фізично ізольованих локальних середовищах
Сьогодні ми з радістю повідомляємо, що Platform9 відкриває вихідні коди Klusterkit, набору з трьох інструментів за ліцензією Apache v2.0 на GitHub.
Наші клієнти викочують програмне забезпечення у приватних дата-центрах, які часто не підключені до інтернету (з міркувань безпеки або з інших причин). Ці великі компанії хочуть використовувати переваги Kubernetes і модернізувати свої програми і при цьому викочувати їх у різних дата-центрах, які нерідко не мають зв'язку із зовнішнім світом. І тут на допомогу приходить Klusterkit, який спрощує постачання та керування кластерами K8s у фізично ізольованих середовищах.
У Klusterkit входять три незалежні інструменти, які можна використовувати разом або окремо для управління життєвим циклом production-кластера Kubernetes:
etcdadm, CLI для спрощеного керування кластером etcd.
nodeadm, CLI для адміністрування нод, який доповнює kubeadm і розгортає залежності, потрібні kubeadm.
cctl, інструмент управління життєвим циклом кластера, який приймає Cluster API з спільноти Kubernetes та використовує nodeadm та etcdadm, щоб без зайвого клопоту постачати та підтримувати високодоступні кластери Kubernetes у локальних і в тому числі фізично ізольованих середовищах.
Разом ці три інструменти виконують такі завдання:
Просте постачання та управління високодоступним кластером etcd та панеллю управління Kubernetes у фізично ізольованих локальних середовищах через Cluster API.
Відновлення панелі керування кластером після збою за допомогою бекапу etcd.
Упаковка всіх артефактів, необхідних постачання Kubernetes, у фізично ізольованих середовищах.
Можливості Klusterkit
Підтримка кількох майстрів (HA-кластер K8s).
Постачання захищених кластерів etcd та управління ними.
Робота у фізично ізольованих середовищах.
Підтримка послідовного оновлення та відкату.
Flannel (vxlan) як CNI для бекенда; у планах підтримка інших CNI.
Резервування та відновлення etcd-кластерів після втрати кворуму.
Захист панелі керування від нестачі пам'яті та часу ЦП.
Архітектура рішення 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 у каталоги версій:
3 – При необхідності оркеструвати кластер Kubernetes локально, у фізично ізольованому середовищі, потрібні залежності можна легко завантажити заздалегідь на комп'ютері з виходом в інтернет командою завантаження nodeadm та etcdadm. Потім завантажені елементи (тобто kubelet та юніт-файл kubelet для systemd, виконувані файли файли CNI, файл kubeadm, всі образи контейнерів, включаючи Kubernetes, образ keepalived і файл systemd, образ контейнера etcd та відповідні файли конфігурації) можна легко скопіювати фізично ізольовані хости разом з cctl, nodeadm та etcdadm. (Подробиці див. вики).
4 – Коли все на місці, створити перший кластер Kubernetes можна парою команд: