Налаштування AWS EKS: кластер, готовий до production

Кластер у хмарі втрачає стійкість, коли навантаження зростають, а конфігурацію зібрано нашвидкоруч. Ми налаштовуємо EKS в AWS під ключ: проєктуємо відмовостійку схему, автоматизуємо оновлення й відновлення вузлів. Замовник отримує передбачуваний час відновлення та інфраструктуру, яка витримує пікові навантаження.
Часті запитання

Налаштування EKS в AWS: де кластер втрачає стійкість

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

Налаштування EKS в AWS — це не встановлення, а набір рішень про те, як система поводиться в найгіршому сценарії.

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

При першому ж сплеску спрацьовує витіснення за пам'яттю, поди перезапускаються хвилею, і сервіс потрапляє в цикл «піднявся — упав».

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

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

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

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

Вимірний ефект: стійкість і швидкість відновлення

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

Стійкість і відновлення

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

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

Масштабування й оновлення

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

Що перевіряємо на прийманні:

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

Підходи до розгортання: керований AWS чи ручне складання

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

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

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

Самостійне складання виправдане там, де ізоляція або вимоги регулятора важливіші за швидкість операцій. У цьому випадку ми окремо плануємо трудовитрати на супровід шару керування, оновлення й відновлення стану.

Етапи впровадження: від аудиту до передавання в підтримку

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

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

Передавані артефакти: конфігурації, схеми, регламенти

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

  • Інфраструктура як код — опис кластера й пов'язаних ресурсів у Terraform: модулі за шарами (мережа, кластер, вузли, доступи), стан у віддаленому сховищі з блокуванням, зміни через перевірку й план перед застосуванням.
  • Конфігурація кластера — маніфести й Helm-чарти системних компонентів: автомасштабування вузлів і подів, вхідний контролер, збір метрик і логів, квоти й ліміти на простори імен.
  • Схеми мережі — адресація підмереж, розділення публічних і приватних зон, маршрутизація, виходи в інтернет, правила доступу до зовнішніх сервісів: графіка плюс таблиця відповідності.
  • Регламент оновлень — періодичність апгрейду керуючого шару й вузлів, вікна робіт, перевірка сумісності компонентів, порядок відкату на попередню версію, точки узгодження.
  • Політики доступу й секретів — ролі та прив'язки, розділення прав команд і сервісних облікових записів, зберігання й ротація ключів.
  • Моніторинг і алерти — панелі моніторингу, ключові метрики, пороги спрацьовування, маршрути сповіщень і вказівка, на що реагує черговий.
  • Документація — інструкції з типових операцій (відновлення вузла, розширення пулів, викат релізу), схема архітектури, журнал рішень і чек-лист приймання.

Кейс: як кластер перестав падати на пікових навантаженнях

Початкова картина

Кластер на Amazon EKS збирали точковими правками через панель керування: групи вузлів одного розміру, автомасштабування лише за середнім завантаженням процесора, пороги перевірок готовності виставлені «на око».

На піках це давало передбачувану деградацію — час відгуку зростав із 400 мс до 3 секунд, частка запитів з помилками сягала 4–5%, а нові копії сервісів з'являлися через 8–12 хвилин після початку зростання трафіку.

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

Що змінили

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

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

Як вимірювали результат

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

За квартал частка відмов на піку впала з 4–5% до 0,2%, час відгуку — з 3 секунд до 700 мс, додавання копій прискорилося з 12 хвилин до 90 секунд, відновлення сервісу зайняло 4 хвилини замість 35. Кількість інцидентів, що потребували ручного втручання, скоротилася з дев'яти до одного.

Що робити, якщо кластер уже розгорнуто й він працює

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

Якщо каркас робочий, завдання закривають точкові доопрацювання.

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

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

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

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

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

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

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

Технічні питання: доступи, оновлення, відмова вузла

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

Як розмежувати доступи й ролі?

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

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

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

Як оновлювати без простою?

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

Як контролювати витрату ресурсів?

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

Як перенести наявні сервіси?

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

Обговоримо завдання й повернемося з оцінкою та планом робіт

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

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

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

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

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

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

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