Налаштування кластера Kubernetes через Kubespray

Ручне складання кластера ламається при першому ж оновленні й тримає команду в ручному режимі. Ми налаштовуємо кластери через Kubespray під ключ: відтворюваний опис, повторювані середовища, зрозумілі регламенти передачі. Розгортання та масштабування прискорюються в рази, а супровід перестає залежати від одного інженера.
Часті запитання

Кластер збирають вручну: що ламається і чим допомагає Kubespray

Ручна збірка кластера починається однаково: піднімають керуючий шар, додають робочі вузли, ставлять мережевий плагін, налаштовують сховище. До третього середовища стани розходяться — кожен крок виконували по пам'яті, в різному порядку й з правками по ходу.

Перше розходження конфігурацій середовищ зазвичай спливає на інциденті: у тесті поведінка відтворюється, у продуктивному середовищі ні, а причина — один забутий рядок у параметрах.

Далі різниця лише накопичується: інший порядок дій, інша версія середовища виконання контейнерів, інші параметри планувальника та інший набір розширень.

У кожної такої різниці немає автора й немає історії правок — діагностика займає години, а після виправлення ніхто не гарантує, що завтра не з'явиться нова.

Налаштування Kubernetes кластера через Kubespray будується на іншому принципі: стан описується декларативно — інвентарем вузлів і набором змінних.

Один опис застосовується до тестового, передпродуктивного й продуктивного середовища, а справді потрібні відмінності виносяться в явний шар поверх спільного. Кластер стає результатом застосування опису, який можна перевірити й повторити.

Звідси передбачуваність: додавання вузла, оновлення, зміна параметрів мережі проходять однаково в усіх середовищах. Відкат теж перетворюється на процедуру — повернути попередній опис і застосувати його. Нижче розбираємо, як це влаштовано і з чого починати.

Відтворюваність середовищ: що дає декларативний опис кластера

Декларативний опис кластера — це набір файлів з ролями вузлів, мережами, сховищем і надбудовами. Kubespray читає такий інвентар і приводить контур до описаного стану, тому тестовий майданчик і робочий збираються з одних змінних — розходження між середовищами зникають як клас.

Новий вузол уводиться однією операцією: хост додається в інвентар, запускається прогін, і вузол доходить до готовності приймати навантаження.

Раніше така процедура розтягувалася на день ручних кроків і закінчувалася звіркою за чек-листом; тепер перший вузол і сотий проходять однаково.

Час відновлення кластера визначається не пам'яттю чергового, а файлами в репозиторії. Якщо контур зруйновано, його перезбирають з опису й отримують ту саму топологію, ті самі адреси сервісів і ті самі політики — без археології за залишками конфігурацій.

Автоматизація розгортання робить стан відтворюваним: зміна проходить перевірку як правка коду, а відкат — це повернення файлу до попередньої версії. Дрейф, накопичений ручними налаштуваннями, перестає виникати.

Відмінності між стендами виносяться в змінні: кількість вузлів, класи машин і набір надбудов змінюються точково, загальна частина опису залишається єдиною. Оновлення кластера йде тим самим прогоном, що й первинна збірка.

Kubespray, ручне налаштування й керований кластер: порівняння

Підходи відрізняються не набором компонентів, а тим, де проходить межа відповідальності. У варіанті з Kubespray бажаний стан кластера описується декларативно, і заміна або додавання вузла стає повторюваною операцією.

При ручній збірці все тримається на вашій інструкції — саме її якість визначає, чи відтвориться конфігурація на іншому стенді. У керованому кластері шар управління залишається в провайдера: ви не адмініструєте його, але й не впливаєте на темп оновлень і доступні налаштування. Нижче — умови, за яких кожен варіант доречний, і чим за це доводиться платити.

Варіант Коли підходить Обмеження
Kubespray Своє залізо або закритий контур; нестандартні параметри мережі й сховища; є інженер, який веде оновлення Оновлення потрібно проганяти на тестовому контурі; стан вузлів управління залишається вашою зоною відповідальності
Ручна збірка Мінімальний набір компонентів під конкретну задачу; важлива прозорість кожного кроку встановлення Відтворюваність тримається на дисципліні, розходження між стендами накопичується, введення нового інженера сповільнюється
Керований кластер Невелика команда, пріоритет — швидкий випуск сервісів; дані допустимо тримати в провайдера Шар управління закритий для тонкого налаштування, частину обмежень і темп оновлень задає провайдер

Різниця проявляється на експлуатації, а не на встановленні. У перших двох варіантах оновлення й відновлення вузла — ваша процедура і ваша відповідальність за її актуальність, у третьому це частина регламенту провайдера. Звідси й вибір: він зводиться до того, де ви хочете тримати цю процедуру.

Порядок впровадження: від обстеження середовища до передачі

Порядок впровадження узгоджуємо до першої команди налаштування: поки схему не зафіксовано, будь-яка зміна топології обходиться в повторний прогін і простій.

Починаємо з обстеження інфраструктури, закінчуємо прийманням — із замірами й документом, за яким кластер обслуговує чергова зміна без нас.

  1. Обстеження інфраструктури. Інвентаризація вузлів, мережевих зон, сховищ і балансувальників, від яких залежить кластер. Фіксуємо, що перевикористовуємо, що піднімаємо заново, які адреси вже зайняті.
  2. Схема й план розгортання кластера. Топологія керуючих і робочих вузлів, розбиття на групи, адресація, точки відмови. Узгоджуємо до першого прогону: правки на цьому етапі коштують хвилини, після — переробку.
  3. Налаштування кластера. Kubespray з параметрами під конкретне середовище: власні значення інвентарю, окремі групи під навантажені сервіси, компоненти з актуальної стабільної гілки.
  4. Перевірка на відмову. По черзі гасимо робочий вузол і вузол управління, дивимося, чи переїжджають навантаження і чи зберігається доступність сервісів. Окремо перевіряємо сховище й мережу між зонами.
  5. Прогін оновлення. Оновлюємо кластер на тестовому контурі, включно з відкатом до попереднього стану, і домагаємося повторюваного прогону без ручних правок на живих вузлах.
  6. Приймання робіт. Метрики здоров'я кластера, регламент експлуатації, видані доступи й розбір типових відмов із черговою зміною. Передаємо документацію і залишаємося на зв'язку щодо питань поза її межами.

Артефакти збірки: конфігурація, ролі, регламенти

Здаємо кластер не як «працює і гаразд», а комплектом, за яким його зможе супроводжувати будь-який інженер команди замовника.

Усе лежить у вашому репозиторії під контролем версій: правки проходять перевірку, історія змін відновлюється, відкат зводиться до повернення попереднього стану.

  • Схема інфраструктури — мережеві зони, вузли управління й робочі вузли, точки входу трафіку, зовнішні сховища й черги; окремо зазначено, що залишилося за межами кластера.
  • Документація по кластеру — інвентар вузлів, значення групових параметрів, встановлені доповнення й розширення API, список відмінностей від типової поставки Kubespray з обґрунтуванням кожного.
  • Політики доступу — ролі й прив'язки прав, розмежування за просторами імен для команд і сервісних облікових записів, правила мережевих політик, порядок видачі й відкликання доступів.
  • Регламент оновлення — послідовність оновлення кластера й доповнень, перевірки перед виведенням вузла з роботи, точки повернення й критерії зупинки.
  • Ролі й параметри встановлення — змінні для контурів розробки, приймання й промислового, щоб повторне розгортання стенда займало години, а не тижні.
  • Інструкції з типових операцій — додавання вузла, заміна диска, планова заміна сертифікатів, відновлення з резервної копії, реакція на спрацювання перевірок моніторингу.
  • Угода про супровід — строки реакції на збої, порядок оформлення змін, місце фіксації інцидентів і розборів.

На виході — середовище, яке не потрібно відновлювати за пам'яттю одного інженера: оновлення, правка або передача кластера іншій команді йде за описаним сценарієм.

Кейс: Kubespray на 40 вузлах — що змінилося за квартал

Замовник прийшов із кластером Kubernetes на 40 вузлів, зібраним вручну: конфігурації правилися прямо на живих машинах, а розходження між тестовим і продуктивним контурами спливали під час інцидентів.

Відновлення вузла після збою займало години й трималося на пам'яті одного інженера — стан описували в особистих нотатках, а не в репозиторії.

Що зробили

Перенесли опис кластера в інвентар Kubespray: версії компонентів, параметри мережі, налаштування вузлів і політики оновлення стали частиною репозиторію.

Міграцію кластера провели без простою — піднімали нові вузли за ролями, переводили на них навантаження й виводили старі з-під трафіку. Контури вирівняли: один інвентар і різні набори змінних для тесту й продукту.

Що стало за квартал

Час збірки кластера з нуля скоротився з півтора доби до двох з невеликим годин — основну частину тепер займає не ручне налаштування, а встановлення оновлень на вузлах.

Кількість розходжень між контурами знизилася з кількох десятків до нуля: відхилення видно у звіті про відмінності ще до запуску. Відновлення вузла займає хвилини — роль перевстановлюється з репозиторію, а не з пам'яті інженера.

Надійність кластера стала перевірюваною: оновлення йдуть спочатку на тест, потім на продуктив, з можливістю відкотити весь набір одразу. Цей порядок ми переносимо в інші проєкти — стан у коді, зміни тільки через перевірку, відновлення як штатна операція.

Чим Kubespray відрізняється від ручної збірки кластера

Kubespray — набір ролей Ansible, який описує кластер декларативно: склад вузлів в інвентарі, версії компонентів, параметри мережі й сховища — у змінних груп.

Ручна збірка йде від зворотного, від послідовності команд, яка живе в голові інженера або в скрипті під конкретний випадок.

Різниця проявляється не на першому встановленні, а на третій-четвертій операції.

Додати вузол, замінити керуючий вузол, що вийшов з ладу, оновити гілку компонентів — за ручного підходу порядок кроків щоразу відновлюють з пам'яті, і кластер поступово розходиться з початковим станом.

Операція Ручна збірка Kubespray
Первинне встановлення Швидше, якщо вузол один Спочатку описуються інвентар і змінні
Додавання вузла Повтор кроків вручну, ризик пропустити роль Той самий набір ролей, що й при встановленні
Оновлення версії Порядок тримають у голові Поетапно за вузлами, з витісненням навантаження
Відновлення Залежить від того, що встигли записати Стан відтворюється з опису

Існуючий кластер не завада: прогін приводить працюючі вузли до описаного стану, не перестворюючи їх. Спочатку знімається резервна копія стану, далі зміни йдуть по одному вузлу з витісненням навантаження — відкат залишається можливим на кожному кроці.

Вибір інструмента збірки зводиться до кількості середовищ і строку життя кластера. Один кластер під перевірку гіпотези швидше зібрати руками; кілька середовищ, повторювані стенди й передача експлуатації іншій команді — аргументи на користь декларативного опису.

Сумніви щодо сумісності й оновлень кластера

Кластер після Kubespray — це інвентар вузлів і набір ролей, а не чорний ящик: оновлення Kubernetes тут відтворюване й відкочується тим самим прогоном. Нижче — три сумніви, які найчастіше звучать на етапі приймання.

Як оновити Kubernetes без простою сервісів?

Ідемо по черзі: спочатку керуючий шар — по одному вузлу з перевіркою готовності, потім робочі вузли з витісненням навантажень на вільні машини й очікуванням, поки застосунки піднімуться.

Розкатка йде через паузи й перевірки, тому відкат — це повторний прогін на попередніх параметрах, а не відновлення з резервної копії.

Що робити з несумісністю версій доповнень?

Матрицю сумісності Kubernetes, мережевого шару, сховища секретів і контролерів доступу фіксуємо до початку робіт. Перед оновленням проганяємо перевірку на тестовому контурі з тим самим набором навантажень: несумісні доповнення оновлюємо разом із кластером, а не після.

Як передається кластер і що входить у супровід?

Віддаємо інвентар, ролі, значення змінних і описи контурів — усе лежить у репозиторії, з якого кластер збирається з нуля. Супровід кластера будується на регламенті оновлень і моніторингу: видно, які вузли й доповнення змінювалися, тому нова версія ставиться передбачувано.

Обговоримо задачу: що уточнимо і що надішлемо після розбору

Щоб оцінка робіт спиралася на факти, почнемо з розбору поточної інфраструктури: схеми вузлів, вимог до доступності й того, що вже працює в проді. Цього достатньо, щоб зрозуміти обсяг, вузькі місця й ризики розгортання кластера через Kubespray.

Уточнюємо на дзвінку:

  • де розміщуємо кластер — фізичні сервери, віртуальні машини або хмара, і як ділимо вузли на керуючі та робочі;
  • який режим доступності потрібен: скільки керуючих вузлів тримаємо і чи потрібен балансувальник перед точкою доступу до керуючого контуру;
  • мережі: які діапазони адрес виділяємо під навантаження і служби, чи є заборони на маршрутизацію між сегментами;
  • сховище: які класи накопичувачів доступні і чи потрібен драйвер для навантажень з постійними даними;
  • доступи: як видаються ролі, де зберігаються секрети, чи є вимоги до журналу змін;
  • оновлення: хто і як часто оновлює кластер і який план відкату вважаєте прийнятним.

Після обговорення задачі надсилаємо оцінку робіт і план впровадження — з припущеннями, від яких вони залежать, і точками перевірки на кожному етапі. Разом із ними технічну документацію й чек-лист підготовки до старту:

  • конфігурацію інвентарю й ролі вузлів у вигляді, який ви зберігаєте у своєму репозиторії;
  • схему мережі й адресації із зарезервованими діапазонами;
  • політику оновлень і відкату, регламент резервного копіювання керуючого контуру;
  • чек-лист підготовки до старту: доступи, вікна робіт, відповідальні з вашого боку.

Опишіть задачу — повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142