Налаштування легкого Kubernetes (k3s) для edge/IoT

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

k3s для периферії: де ламається класичний кластер

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

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

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

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

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

Що дає легкий кластер на віддалених майданчиках

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

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

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

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

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

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

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

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

Режими розгортання k3s: одиночний вузол або кластер

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

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

Варіант Коли підходить Обмеження
Одиночний вузол, вбудоване сховище Один майданчик, десяток сервісів, простій на перезавантаження допустимий Кворуму немає: збій вузла зупиняє управління до відновлення з резервної копії
Одиночний вузол, зовнішня база Потрібен передбачуваний бекап стану та перенесення на нове залізо База стає другою точкою відмови, її резервують окремо
Кластер із трьох керуючих вузлів Простій неприпустимий, канал між вузлами стабільний Непарна кількість вузлів обов'язкова; при розриві зв'язку керуючий шар перестає приймати зміни
Кластер із розподіленим сховищем Ролі рознесені по майданчиках, потрібен переїзд робочих навантажень Складніше вводити в стрій, чутливий до затримок і втрати пакетів

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

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

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

Впровадження k3s: етапи робіт від аудиту до передачі

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

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

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

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

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

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

  6. Передача в експлуатацію. Віддаємо документацію та регламенти, навчаємо вашу команду, передаємо доступи, налаштовуємо оповіщення про інциденти.

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

Що замовник отримує на руки після впровадження

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

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

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

Кейс: 40 майданчиків на одному контурі управління

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

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

Заміри до та після

Показник До Після
Майданчиків з єдиною конфігурацією 22 з 40 40 з 40
Оновлення одного майданчика 40–60 хвилин вручну 3–5 хвилин зі спільного контуру
Відновлення після відмови вузла 2–4 години з виїздом 10–15 хвилин автоматично
Виїздів інженера на місяць 10–14 1–2
Частка ручних операцій при розгортанні близько 80% близько 10%

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

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

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

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

Чим k3s відрізняється від класичного Kubernetes?

k3s — той самий Kubernetes API і той самий набір абстракцій, але зібраний в один процес замість п'яти сервісів.

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

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

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

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

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

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

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

Часті технічні питання щодо впровадження

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

Кластер на віддаленому майданчику продовжить працювати без інтернету?

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

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

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

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

Наскільки захищений кластер на об'єкті?

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

Як збирати логи та метрики при нестабільному зв'язку?

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

Обговоримо ваше завдання та повернемося з планом

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

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

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

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

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

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