Перейти до вмісту

Модуль 1.1: Що таке Kubernetes?

Складність: [ШВИДКО] - Базові концепції

Час на виконання: 20-25 хвилин

Передумови: Немає


Що ви зможете робити

Розділ «Що ви зможете робити»

Після завершення цього модуля ви зможете:

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

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

“Що таке Kubernetes?” може здатися простим питанням, але глибоке його розуміння є критично важливим. KCNA перевіряє, чи ви дійсно розумієте призначення Kubernetes, а не лише його функції.

Цей модуль закладає фундамент, на якому будується все інше.


Проблема, яку вирішує Kubernetes

Розділ «Проблема, яку вирішує Kubernetes»
┌─────────────────────────────────────────────────────────────┐
│ ДО KUBERNETES │
├─────────────────────────────────────────────────────────────┤
│ │
│ Традиційне розгортання: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Сервер 1 Сервер 2 Сервер 3 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │Застосунок│ │Застосунок│ │Застосунок│ │ │
│ │ │ A │ │ B │ │ C │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ ОС │ │ ОС │ │ ОС │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │Обладнан.│ │Обладнан.│ │Обладнан.│ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Проблеми: │
│ • Один застосунок на сервер = марнування │
│ • Сервер падає = застосунок падає │
│ • Ручне масштабування │
│ • Розгортання — це ризик │
│ • Немає стандартного способу керування │
│ │
└─────────────────────────────────────────────────────────────┘

Kubernetes (K8s) — це платформа з відкритим кодом для оркестрації контейнерів, яка автоматизує розгортання, масштабування та керування контейнеризованими застосунками.

ТермінЗначення
Відкритий кодБезкоштовний, керований спільнотою, без прив’язки до постачальника
Оркестрація контейнерівКерування багатьма контейнерами як системою
ПлатформаОснова для побудови, а не просто інструмент
АвтоматизуєЗменшує ручну роботу та людські помилки
  • Kubernetes = грецькою “рульовий” або “пілот”
  • K8s = K + 8 літер + s (скорочення)
  • Створений у Google (на основі Borg)
  • Переданий CNCF у 2015 році

┌─────────────────────────────────────────────────────────────┐
│ МОЖЛИВОСТІ KUBERNETES │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. РОЗГОРТАННЯ │
│ "Запусти мій застосунок" │
│ ├── Розгортання контейнерів │
│ ├── Послідовні оновлення │
│ └── Відкат у разі потреби │
│ │
│ 2. МАСШТАБУВАННЯ │
│ "Обробляй більше трафіку" │
│ ├── Масштабування вгору (більше реплік) │
│ ├── Масштабування вниз (менше реплік) │
│ └── Автомасштабування на основі метрик │
│ │
│ 3. САМОВІДНОВЛЕННЯ │
│ "Тримай його працюючим" │
│ ├── Перезапуск збійних контейнерів │
│ ├── Заміна несправних вузлів │
│ └── Переплановування при відмові вузла │
│ │
│ 4. ВИЯВЛЕННЯ СЕРВІСІВ │
│ "Нехай застосунки знаходять один одного" │
│ ├── Виявлення на основі DNS │
│ ├── Балансування навантаження │
│ └── Внутрішня мережа │
│ │
│ 5. КОНФІГУРАЦІЯ │
│ "Керуй налаштуваннями" │
│ ├── ConfigMaps для конфігурації │
│ ├── Secrets для чутливих даних │
│ └── Ін'єкція змінних середовища │
│ │
└─────────────────────────────────────────────────────────────┘

Kubernetes проти альтернатив

Розділ «Kubernetes проти альтернатив»

Чому б не просто використовувати віртуальні машини?

Розділ «Чому б не просто використовувати віртуальні машини?»
АспектВіртуальні машиниKubernetes + Контейнери
Час запускуХвилиниСекунди
Використання ресурсівВажке (повна ОС)Легке (спільне ядро)
Щільність~десятки на хост~сотні на хост
ПортативністьОбмеженаВисока
МасштабуванняПовільнеШвидке

Чому б не просто використовувати Docker?

Розділ «Чому б не просто використовувати Docker?»

Docker запускає контейнери. Kubernetes оркеструє їх:

┌─────────────────────────────────────────────────────────────┐
│ DOCKER проти KUBERNETES │
├─────────────────────────────────────────────────────────────┤
│ │
│ DOCKER: │
│ "Запусти цей контейнер на цій машині" │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ docker run nginx │ │
│ │ → Запускає ОДИН контейнер на ОДНІЙ машині │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ KUBERNETES: │
│ "Запусти 3 копії, тримай їх здоровими, балансуй трафік" │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Deployment: nginx, replicas: 3 │ │
│ │ → Запускає через кластер │ │
│ │ → Самовідновлюється, якщо один падає │ │
│ │ → Балансує трафік │ │
│ │ → Масштабується вгору/вниз автоматично │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Docker = Середовище виконання контейнерів │
│ Kubernetes = Оркестратор контейнерів │
│ │
└─────────────────────────────────────────────────────────────┘

Ключові концепції Kubernetes

Розділ «Ключові концепції Kubernetes»

Декларативна конфігурація

Розділ «Декларативна конфігурація»

Ви кажете Kubernetes що ви хочете, а не як це зробити:

# Ви оголошуєте: "Я хочу 3 репліки nginx"
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3 # Бажаний стан
...

Kubernetes постійно працює, щоб реальність відповідала вашому оголошенню.

Бажаний стан проти поточного стану

Розділ «Бажаний стан проти поточного стану»
┌─────────────────────────────────────────────────────────────┐
│ УЗГОДЖЕННЯ БАЖАНОГО СТАНУ │
├─────────────────────────────────────────────────────────────┤
│ │
│ Ви оголошуєте: "Я хочу 3 репліки" │
│ │ │
│ ▼ │
│ Kubernetes: Перевіряє поточний стан │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ Якщо працюють 2: Якщо працюють 4: │
│ "Створити ще 1" "Видалити 1" │
│ │
│ Цей цикл працює БЕЗПЕРЕРВНО │
│ Kubernetes ніколи не перестає намагатися │
│ досягти бажаного стану │
│ │
└─────────────────────────────────────────────────────────────┘

Незмінна інфраструктура

Розділ «Незмінна інфраструктура»
  • Контейнери не модифікуються на місці
  • Оновлення створюють нові контейнери
  • Старі контейнери замінюються, а не змінюються
  • Це забезпечує послідовність та відтворюваність

Kubernetes може працювати:

СередовищеПриклади
Публічна хмараEKS (AWS), GKE (Google), AKS (Azure)
Приватна хмараOpenStack, VMware
ЛокальноBare metal, дата-центри
На межіРоздрібні магазини, фабрики
Розробкаminikube, kind, Docker Desktop

Ця гнучкість — ключова перевага: немає прив’язки до постачальника.


  • Kubernetes походить від Google Borg - Google запускав Borg внутрішньо понад 10 років, перш ніж створити Kubernetes як версію з відкритим кодом.

  • K8s працює в масштабі - Великі кластери можуть запускати 5 000+ вузлів та 150 000+ Подів.

  • Більшість проєктів CNCF інтегруються з K8s - Kubernetes є фундаментом екосистеми хмарних технологій.

  • Цикл випусків передбачуваний - Нові версії Kubernetes виходять приблизно кожні ~4 місяці з 14-місячним вікном підтримки.


ПомилкаЧому це шкодитьПравильне розуміння
”K8s — це просто Docker”Втрачено цінність оркестраціїK8s оркеструє контейнери; Docker їх запускає
”K8s замінює ВМ”Вони служать різним цілямK8s працює НА ВМ або bare metal
”K8s тільки для великих компаній”Втрачено цінність для розробкиK8s працює у будь-якому масштабі
”K8s — це середовище виконання контейнерів”Плутання рівнівK8s використовує середовища виконання як containerd

  1. Що означає K8s?

    Відповідь K8s — це скорочення для Kubernetes. K + 8 літер (ubernete) + s.
  2. Яка основна функція Kubernetes?

    Відповідь Оркестрація контейнерів — автоматизація розгортання, масштабування та керування контейнеризованими застосунками через кластер.
  3. У чому різниця між Docker і Kubernetes?

    Відповідь Docker — це середовище виконання контейнерів (запускає контейнери). Kubernetes — це оркестратор контейнерів (керує контейнерами на кількох машинах, обробляє масштабування, самовідновлення тощо).
  4. Що означає “декларативна конфігурація” в Kubernetes?

    Відповідь Ви оголошуєте бажаний стан (що ви хочете), і Kubernetes працює, щоб реальність відповідала йому. Ви не даєте покрокових команд.
  5. Звідки походить Kubernetes?

    Відповідь Google. Він базується на їхній внутрішній системі під назвою Borg. Google передав Kubernetes до CNCF у 2015 році.

Kubernetes — це:

  • Платформа з відкритим кодом для оркестрації контейнерів
  • Автоматизує розгортання, масштабування та керування
  • Використовує декларативну конфігурацію (бажаний стан)
  • Працює будь-де (хмара, локально, на межі)

Kubernetes робить:

  • Розгортає та оновлює контейнери
  • Масштабує застосунки вгору та вниз
  • Самовідновлюється при збоях
  • Забезпечує виявлення сервісів
  • Керує конфігурацією

Ключовий висновок: Kubernetes — це НЕ середовище виконання контейнерів. Він оркеструє контейнери, які фактично запускає containerd або інші середовища виконання.


Модуль 1.2: Основи контейнерів - Розуміння контейнерів перед зануренням в архітектуру Kubernetes.