Kubernetes — переносна й розширювана платформа з відкритим кодом для керування контейнерними навантаженнями та сервісами. Вона не пише застосунок і не збирає його образ. Її основна задача — запускати описану роботу на групі машин і постійно наближати фактичний стан до бажаного.
Уявімо API інтернет-магазину. Команда хоче, щоб завжди працювали три його копії. Якщо машина вимкнулася й копій залишилося дві, Kubernetes помічає розбіжність і намагається створити заміну на доступній машині. Це не гарантія успіху: неправильний образ, брак ресурсів або помилка програми можуть завадити запуску.
Від контейнера до кластера
Контейнер запускає застосунок як ізольований процес разом із потрібними файлами та бібліотеками. Він не є повною віртуальною машиною і сам не вирішує, де перезапуститися після збою.
Вузол — фізична або віртуальна машина. Кілька вузлів утворюють кластер. Kubernetes розподіляє між ними роботу.
Контейнери працюють усередині Pod. Pod — об’єкт Kubernetes, що об’єднує один або кілька контейнерів для спільного запуску. У нашому прикладі кожен Pod містить один контейнер API, тому три копії API означають три окремі об’єкти Pod.
Керівна частина кластера приймає описи ресурсів і запускає процеси керування. Вони знову й знову проходять цикл: читають бажаний стан, спостерігають фактичний, знаходять різницю та намагаються її виправити. Цей цикл називають узгодженням стану, або reconciliation.
Один приклад: три копії API
Наскрізний приклад використовує вигаданий образ example/shop-api:1.0. Команда описує Deployment — ресурс, який підтримує задану кількість подібних Pod:
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop-api
spec:
replicas: 3
selector:
matchLabels:
app: shop-api
template:
metadata:
labels:
app: shop-api
spec:
containers:
- name: api
image: example/shop-api:1.0
Це маніфест: текстовий опис об’єкта Kubernetes, зазвичай у YAML або JSON. apiVersion указує версію API, а kind — тип об’єкта. replicas задає три копії. selector пов’язує Deployment із Pod, що мають мітку app: shop-api. template описує ці Pod та контейнерний образ.
Коли дані маніфесту надсилають до Kubernetes API, spec фіксує бажаний стан. status, який оновлює система, описує спостережуваний стан. Контролери намагаються скоротити різницю між ними. Вони можуть створити новий Pod замість зниклого, але не виправлять код, неправильний образ, відсутню залежність або помилковий задум у spec.
Приклад має узгоджені селектор і мітки, але не є рецептом для робочого середовища. У реальній системі окремо проєктують ресурси процесора й пам’яті, перевірки готовності, мережу, доступи, сховище, оновлення, спостережуваність і відновлення.
Що Kubernetes дає — і де його межі
Kubernetes може розміщувати Pod на вузлах, підтримувати кількість копій, виконувати керовані оновлення, надавати механізми пошуку сервісів і балансування навантаження та підключати сховища. Це будівельні блоки платформи, а не завершена відповідь на всі операційні задачі.
Kubernetes не збирає код автоматично й не визначає процес безперервної інтеграції та доставки. Він не надає бази даних, черги або повну систему моніторингу як вбудовані прикладні сервіси. Такі компоненти можна запускати чи інтегрувати, але їх усе одно потрібно обрати, налаштувати й підтримувати.
Самовідновлення також має межі. Kubernetes може замінити контейнер, який упав, але не відновить пошкоджені дані й не зробить неправильну програму правильною. Безпека потребує окремих рішень щодо прав, мережі, секретів, оновлень та аудиту.
Яку платформу розглянути
| Варіант | Основна задача | Коли доречний |
|---|---|---|
| Docker Compose | Описати в одному YAML-файлі та разом запускати кілька контейнерних сервісів | Розробка, навчання або невеликий застосунок без потреби у відмовостійкому кластері |
| Docker Swarm | Підтримувати декларативно описані сервіси на кластері Docker Engine | Потрібен кластер і вбудоване в Docker керування, але не ширша платформна модель Kubernetes |
| Nomad | Планувати контейнерні, пакетні та деякі неконтейнерні задачі | Потрібні різні типи навантажень або команда свідомо обирає вужчий оркестратор |
| Kubernetes | Керувати контейнерними застосунками через розширюваний API | Є вимоги до спільної платформи, автоматизації та розширюваності, а команда здатна її підтримувати |
| Google Cloud Run | Запустити сервіс, разове завдання або фоновий процес без власного кластера | Важливі швидкий запуск і мала операційна робота, а модель та обмеження провайдера прийнятні |
Це не універсальний рейтинг. Docker Compose і Docker Swarm не є «молодшими версіями» Kubernetes. Nomad має вужчий фокус, а Google Cloud Run переносить більше операційної відповідальності до хмарного провайдера. Вибір починається з типу роботи, вимог до відмов, потрібного контролю й людей, які підтримуватимуть систему.
Коли Kubernetes зайвий
Kubernetes, імовірно, зайвий для одного невеликого застосунку на одній машині, простого внутрішнього сервісу або навчального проєкту, якщо немає окремої потреби в кластерній моделі.
Він також може бути зайвим, коли керована платформа вже дає потрібну HTTPS-адресу й масштабування, а команда не потребує власного кластера. Якщо ніхто не відповідає за оновлення, доступи, мережу, спостережуваність і відновлення, самостійний Kubernetes додає новий ризик.
Багато сервісів саме по собі теж не є достатнім аргументом. Потрібні конкретні вимоги, які виправдовують складність: спільний API платформи, розміщення на багатьох вузлах, контроль інфраструктури або розширення моделі ресурсів.
Безпечна допомога ШІ
Для навчання агент може пояснити модель, скласти картку вимог, запропонувати план і створити один файл лише в явно погодженій одноразовій теці. Він не отримує kubeconfig, токени, секрети, доступ до робочого середовища або дозвіл запускати kubectl, встановлювати пакети, робити push чи розгортання.
Огляд наявного проєкту — інша гілка. Агент читає тільки погоджену очищену локальну копію, створює інвентар і позначає невідоме. Він не редагує проєкт. Якщо потрібен експеримент, для нього спочатку готують окрему одноразову копію й окремо погоджують межі.
Після будь-якої дозволеної локальної дії людина перевіряє diff, список файлів і кожне поле за офіційною документацією. Впевнена відповідь агента не є доказом. Застосування до кластера, робота із секретами та робочим середовищем залишаються поза цим маршрутом.
Що запам’ятати
Kubernetes підтримує описаний стан контейнерних застосунків на кластері. Його основна модель — не послідовність жорстких команд, а безперервне узгодження бажаного й фактичного станів.
Спочатку визначте задачу, порівняйте простіші варіанти й перевірте, хто підтримуватиме платформу. Для першого знайомства достатньо прочитати один маніфест або створити його в одноразовій локальній теці без доступу до кластера. Далі можна перейти до новини про те, як KYAML робить запис Kubernetes-маніфестів явнішим.
Джерела
Оберіть платформу й побудуйте безпечну модель разом із ШІ
Маршрут не потребує кластера. Навчальна робота відбувається в одноразовій теці, а наявний проєкт дозволено лише оглядати в очищеній локальній копії.
Виконано кроків:0 / 0
Я вчуся в порожній локальній теціПрацюйте лише з вигаданим вебзастосунком без облікових даних.
Відокремте застосунок від системи керування
Пояснити зв’язок застосунку, контейнера, Pod, вузла й кластера.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Kubernetes не пише код і не створює образ.
Безпечний контекст для агента
- Наскрізний приклад цієї статті.
Дозволено
- Пояснювати терміни й ставити запитання без команд.
Заборонено
- Просити доступ до пристрою, репозиторію, хмари або кластера.
Зупиніться, якщо
- Ви не можете самостійно розрізнити контейнер, Pod і вузол.
Як перевірити
- Закрийте відповідь агента й відтворіть схему самостійно.
Мета: Пояснити зв’язок застосунку, контейнера, Pod, вузла й кластера. Безпечний контекст для агента: - Наскрізний приклад цієї статті. Дозволено: - Пояснювати терміни й ставити запитання без команд. Заборонено: - Просити доступ до пристрою, репозиторію, хмари або кластера. Зупиніться, якщо: - Ви не можете самостійно розрізнити контейнер, Pod і вузол. Очікуваний результат: Схема: застосунок → контейнер → Pod → вузол → кластер. Як перевірити: - Закрийте відповідь агента й відтворіть схему самостійно.
Огляньте лише вигадані вимоги
Зібрати факти, потрібні для вибору платформи.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Вибір залежить від задачі й команди підтримки.
Безпечний контекст для агента
- Вигаданий сервіс, навантаження, допустимий простій і типи задач.
Дозволено
- Скласти картку вимог і позначити невідоме.
Заборонено
- Читати реальні конфіги, .env, журнали або секрети.
Зупиніться, якщо
- Для продовження нібито потрібні приватні дані.
Як перевірити
- Людина звіряє кожну вимогу з початковим описом.
Мета: Зібрати факти, потрібні для вибору платформи. Безпечний контекст для агента: - Вигаданий сервіс, навантаження, допустимий простій і типи задач. Дозволено: - Скласти картку вимог і позначити невідоме. Заборонено: - Читати реальні конфіги, .env, журнали або секрети. Зупиніться, якщо: - Для продовження нібито потрібні приватні дані. Очікуваний результат: Картка вимог без реальних назв і секретів. Як перевірити: - Людина звіряє кожну вимогу з початковим описом.
Оберіть найменш складний достатній варіант
Порівняти Compose, Swarm, Nomad, Kubernetes і керовану платформу.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Більше контролю означає більше операційної відповідальності.
Безпечний контекст для агента
- Картка вимог і таблиця цієї статті.
Дозволено
- Запропонувати варіант, причини, ризик і невідоме.
Заборонено
- Називати Kubernetes переможцем за замовчуванням або вигадувати вартість.
Зупиніться, якщо
- Рекомендація не випливає з вимог.
Як перевірити
- Власник звіряє можливості з офіційними джерелами.
Мета: Порівняти Compose, Swarm, Nomad, Kubernetes і керовану платформу. Безпечний контекст для агента: - Картка вимог і таблиця цієї статті. Дозволено: - Запропонувати варіант, причини, ризик і невідоме. Заборонено: - Називати Kubernetes переможцем за замовчуванням або вигадувати вартість. Зупиніться, якщо: - Рекомендація не випливає з вимог. Очікуваний результат: Запис рішення з вибором, двома причинами, ризиком та умовою перегляду. Як перевірити: - Власник звіряє можливості з офіційними джерелами.
Змініть лише одноразову локальну копію
Створити навчальний Deployment без запуску Kubernetes.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Маніфест фіксує намір, але не доводить працездатність.
Безпечний контекст для агента
- Абсолютний шлях до нової порожньої теки, вигадане ім’я та навчальний образ.
Дозволено
- Створити один deployment.yaml у погодженій теці й показати diff.
Заборонено
- Запускати kubectl, мережеві запити, інсталяції, push, міграції або читати kubeconfig.
Зупиніться, якщо
- Тека не порожня, шлях неоднозначний або з’явилися реальні дані.
Як перевірити
- Людина звіряє всі поля з планом та офіційним прикладом.
Мета: Створити навчальний Deployment без запуску Kubernetes. Безпечний контекст для агента: - Абсолютний шлях до нової порожньої теки, вигадане ім’я та навчальний образ. Дозволено: - Створити один deployment.yaml у погодженій теці й показати diff. Заборонено: - Запускати kubectl, мережеві запити, інсталяції, push, міграції або читати kubeconfig. Зупиніться, якщо: - Тека не порожня, шлях неоднозначний або з’явилися реальні дані. Очікуваний результат: Один локальний deployment.yaml і повний diff. Як перевірити: - Людина звіряє всі поля з планом та офіційним прикладом.
Перевірте артефакти незалежно
Виявити зайві файли, поля та непояснені значення.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Відповідь агента не є доказом.
Безпечний контекст для агента
- План, вміст теки й diff.
Дозволено
- Читати файли та порівнювати їх з офіційною документацією.
Заборонено
- Застосовувати ресурс або підключати кластер.
Зупиніться, якщо
- Є незрозуміле поле, сторонній файл або непідтверджене твердження.
Як перевірити
- Інша людина повторює перевірку за джерелами.
Мета: Виявити зайві файли, поля та непояснені значення. Безпечний контекст для агента: - План, вміст теки й diff. Дозволено: - Читати файли та порівнювати їх з офіційною документацією. Заборонено: - Застосовувати ресурс або підключати кластер. Зупиніться, якщо: - Є незрозуміле поле, сторонній файл або непідтверджене твердження. Очікуваний результат: Перелік перевірених полів і відкритих питань. Як перевірити: - Інша людина повторює перевірку за джерелами.
Поясніть рішення власними словами
Показати розуміння користі й ціни складності.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Відмова від Kubernetes може бути правильним рішенням.
Безпечний контекст для агента
- Запис рішення, diff і результати перевірки.
Дозволено
- Попросити агента вказати суперечність із конкретним джерелом.
Заборонено
- Доручати агенту фінальне обґрунтування або deployment.
Зупиніться, якщо
- Незрозуміло, хто підтримуватиме платформу.
Як перевірити
- Інший читач зіставляє висновки з вимогами й джерелами.
Мета: Показати розуміння користі й ціни складності. Безпечний контекст для агента: - Запис рішення, diff і результати перевірки. Дозволено: - Попросити агента вказати суперечність із конкретним джерелом. Заборонено: - Доручати агенту фінальне обґрунтування або deployment. Зупиніться, якщо: - Незрозуміло, хто підтримуватиме платформу. Очікуваний результат: П’ять власних речень про задачу, вибір, користь, ціну та наступну перевірку. Як перевірити: - Інший читач зіставляє висновки з вимогами й джерелами.
Я оглядаю наявний проєктПрацюйте лише з локальною очищеною копією; ця гілка не дозволяє редагування.
Уточніть межі огляду
Відрізнити пояснення файлів від дозволу змінювати систему.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Файл маніфесту не показує весь live-стан.
Безпечний контекст для агента
- Погоджений список локальних файлів без секретів.
Дозволено
- Пояснювати відомі поля.
Заборонено
- Просити credentials або production-доступ.
Зупиніться, якщо
- Межі файлів не визначені.
Як перевірити
- Власник підтверджує межі. Підтвердження агента недостатньо.
Мета: Відрізнити пояснення файлів від дозволу змінювати систему. Безпечний контекст для агента: - Погоджений список локальних файлів без секретів. Дозволено: - Пояснювати відомі поля. Заборонено: - Просити credentials або production-доступ. Зупиніться, якщо: - Межі файлів не визначені. Очікуваний результат: Карта дозволених файлів і питань. Як перевірити: - Власник підтверджує межі. Підтвердження агента недостатньо.
Виконайте read-only огляд
Знайти ресурси, образи, репліки й невідомі поля без змін.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Огляд не підтверджує стан кластера.
Безпечний контекст для агента
- Очищена локальна копія погоджених файлів.
Дозволено
- Читати ці файли та сформувати інвентар.
Заборонено
- Читати .env, kubeconfig, токени, журнали або інші каталоги.
Зупиніться, якщо
- Знайдено секрет, посилання за межі копії або невідомий генератор.
Як перевірити
- Людина вручну звіряє інвентар із файлами.
Мета: Знайти ресурси, образи, репліки й невідомі поля без змін. Безпечний контекст для агента: - Очищена локальна копія погоджених файлів. Дозволено: - Читати ці файли та сформувати інвентар. Заборонено: - Читати .env, kubeconfig, токени, журнали або інші каталоги. Зупиніться, якщо: - Знайдено секрет, посилання за межі копії або невідомий генератор. Очікуваний результат: Read-only інвентар із шляхами й невідомими. Як перевірити: - Людина вручну звіряє інвентар із файлами.
Складіть план без патча
Описати можливу навчальну зміну й критерії перевірки.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- План не дає дозволу редагувати проєкт.
Безпечний контекст для агента
- Перевірений інвентар і правила репозиторію.
Дозволено
- Запропонувати окрему одноразову копію для майбутнього експерименту.
Заборонено
- Планувати production, upgrade, migration, push або роботу із секретами.
Зупиніться, якщо
- Немає rollback через видалення одноразової копії.
Як перевірити
- Власник перевіряє scope і критерії.
Мета: Описати можливу навчальну зміну й критерії перевірки. Безпечний контекст для агента: - Перевірений інвентар і правила репозиторію. Дозволено: - Запропонувати окрему одноразову копію для майбутнього експерименту. Заборонено: - Планувати production, upgrade, migration, push або роботу із секретами. Зупиніться, якщо: - Немає rollback через видалення одноразової копії. Очікуваний результат: План експерименту без виконання. Як перевірити: - Власник перевіряє scope і критерії.
Збережіть read-only режим
Зафіксувати результати огляду, не змінюючи проєкт.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Ця гілка не дозволяє створення патча.
Безпечний контекст для агента
- Інвентар і погоджена тека для нотатки поза проєктом.
Дозволено
- Створити лише локальну нотатку в окремій одноразовій теці, якщо шлях явно погоджено.
Заборонено
- Редагувати проєкт, запускати команди кластера або встановлювати пакети.
Зупиніться, якщо
- Немає окремої погодженої теки або дія торкається проєкту.
Як перевірити
- git diff і перелік файлів проєкту залишаються без змін.
Мета: Зафіксувати результати огляду, не змінюючи проєкт. Безпечний контекст для агента: - Інвентар і погоджена тека для нотатки поза проєктом. Дозволено: - Створити лише локальну нотатку в окремій одноразовій теці, якщо шлях явно погоджено. Заборонено: - Редагувати проєкт, запускати команди кластера або встановлювати пакети. Зупиніться, якщо: - Немає окремої погодженої теки або дія торкається проєкту. Очікуваний результат: Окрема локальна нотатка або, без дозволу на запис, відповідь у чаті. Як перевірити: - git diff і перелік файлів проєкту залишаються без змін.
Незалежно підтвердьте відсутність змін
Переконатися, що агент нічого не змінив і не звертався до кластера.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Заява агента не є перевіркою.
Безпечний контекст для агента
- Початковий стан, поточний diff та локальні артефакти.
Дозволено
- Людині перечитати diff і список файлів.
Заборонено
- Використовувати cluster credentials для додаткової перевірки.
Зупиніться, якщо
- З’явилася будь-яка непогоджена зміна.
Як перевірити
- Людина або CI read-only перевіряє чистий diff.
Мета: Переконатися, що агент нічого не змінив і не звертався до кластера. Безпечний контекст для агента: - Початковий стан, поточний diff та локальні артефакти. Дозволено: - Людині перечитати diff і список файлів. Заборонено: - Використовувати cluster credentials для додаткової перевірки. Зупиніться, якщо: - З’явилася будь-яка непогоджена зміна. Очікуваний результат: Незалежний запис: проєкт не змінено або перелік відхилень. Як перевірити: - Людина або CI read-only перевіряє чистий diff.
Відділіть факт від припущення
Пояснити лише те, що видно в локальних файлах.
Межі, перевірка й завдання агенту
Спочатку зрозумійте
- Файли не доводять фактичний runtime-стан.
Безпечний контекст для агента
- Перевірений інвентар і незалежний результат diff.
Дозволено
- Позначати факти, висновки та невідоме окремо.
Заборонено
- Стверджувати, що production працює або є безпечним.
Зупиніться, якщо
- Висновок потребує live-доступу.
Як перевірити
- Власник звіряє кожен факт із конкретним локальним файлом.
Мета: Пояснити лише те, що видно в локальних файлах. Безпечний контекст для агента: - Перевірений інвентар і незалежний результат diff. Дозволено: - Позначати факти, висновки та невідоме окремо. Заборонено: - Стверджувати, що production працює або є безпечним. Зупиніться, якщо: - Висновок потребує live-доступу. Очікуваний результат: Короткий звіт фактів, припущень і наступних питань. Як перевірити: - Власник звіряє кожен факт із конкретним локальним файлом.
Короткий чеклист
- Спочатку описати задачу, а вже потім обирати Kubernetes або простішу платформу.
- Не передавати ШІ kubeconfig, токени, секрети чи доступ до робочого кластера.
- Перший маніфест створювати лише для вигаданого застосунку в порожній навчальній теці.
- Не виконувати маніфест у кластері, доки людина не розуміє кожне поле й межі доступу.