Модуль 1.1: Що таке Kubernetes?
Складність:
[ШВИДКО]- Базові концепціїЧас на виконання: 20-25 хвилин
Передумови: Немає
Що ви зможете робити
Розділ «Що ви зможете робити»Після завершення цього модуля ви зможете:
- Пояснити що таке Kubernetes, які проблеми він вирішує та чому він став галузевим стандартом
- Порівняти Kubernetes з традиційним розгортанням, підходами на основі ВМ та іншими системами оркестрації
- Визначити ключові можливості Kubernetes: самовідновлення, масштабування, виявлення сервісів та поступові оновлення
- Оцінити чи виграє даний сценарій навантаження від оркестрації Kubernetes
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»“Що таке Kubernetes?” може здатися простим питанням, але глибоке його розуміння є критично важливим. KCNA перевіряє, чи ви дійсно розумієте призначення Kubernetes, а не лише його функції.
Цей модуль закладає фундамент, на якому будується все інше.
Проблема, яку вирішує Kubernetes
Розділ «Проблема, яку вирішує Kubernetes»┌─────────────────────────────────────────────────────────────┐│ ДО KUBERNETES │├─────────────────────────────────────────────────────────────┤│ ││ Традиційне розгортання: ││ ┌─────────────────────────────────────────────────────┐ ││ │ Сервер 1 Сервер 2 Сервер 3 │ ││ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ ││ │ │Застосунок│ │Застосунок│ │Застосунок│ │ ││ │ │ A │ │ B │ │ C │ │ ││ │ └─────────┘ └─────────┘ └─────────┘ │ ││ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ ││ │ │ ОС │ │ ОС │ │ ОС │ │ ││ │ └─────────┘ └─────────┘ └─────────┘ │ ││ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ ││ │ │Обладнан.│ │Обладнан.│ │Обладнан.│ │ ││ │ └─────────┘ └─────────┘ └─────────┘ │ ││ └─────────────────────────────────────────────────────┘ ││ ││ Проблеми: ││ • Один застосунок на сервер = марнування ││ • Сервер падає = застосунок падає ││ • Ручне масштабування ││ • Розгортання — це ризик ││ • Немає стандартного способу керування ││ │└─────────────────────────────────────────────────────────────┘Що таке Kubernetes?
Розділ «Що таке Kubernetes?»Kubernetes (K8s) — це платформа з відкритим кодом для оркестрації контейнерів, яка автоматизує розгортання, масштабування та керування контейнеризованими застосунками.
Розберемо це
Розділ «Розберемо це»| Термін | Значення |
|---|---|
| Відкритий код | Безкоштовний, керований спільнотою, без прив’язки до постачальника |
| Оркестрація контейнерів | Керування багатьма контейнерами як системою |
| Платформа | Основа для побудови, а не просто інструмент |
| Автоматизує | Зменшує ручну роботу та людські помилки |
Назва
Розділ «Назва»- Kubernetes = грецькою “рульовий” або “пілот”
- K8s = K + 8 літер + s (скорочення)
- Створений у Google (на основі Borg)
- Переданий CNCF у 2015 році
Що робить Kubernetes
Розділ «Що робить Kubernetes»┌─────────────────────────────────────────────────────────────┐│ МОЖЛИВОСТІ 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/v1kind: Deploymentmetadata: name: nginxspec: replicas: 3 # Бажаний стан ...Kubernetes постійно працює, щоб реальність відповідала вашому оголошенню.
Бажаний стан проти поточного стану
Розділ «Бажаний стан проти поточного стану»┌─────────────────────────────────────────────────────────────┐│ УЗГОДЖЕННЯ БАЖАНОГО СТАНУ │├─────────────────────────────────────────────────────────────┤│ ││ Ви оголошуєте: "Я хочу 3 репліки" ││ │ ││ ▼ ││ Kubernetes: Перевіряє поточний стан ││ │ ││ ┌─────────────┴─────────────┐ ││ │ │ ││ ▼ ▼ ││ Якщо працюють 2: Якщо працюють 4: ││ "Створити ще 1" "Видалити 1" ││ ││ Цей цикл працює БЕЗПЕРЕРВНО ││ Kubernetes ніколи не перестає намагатися ││ досягти бажаного стану ││ │└─────────────────────────────────────────────────────────────┘Незмінна інфраструктура
Розділ «Незмінна інфраструктура»- Контейнери не модифікуються на місці
- Оновлення створюють нові контейнери
- Старі контейнери замінюються, а не змінюються
- Це забезпечує послідовність та відтворюваність
Де працює Kubernetes
Розділ «Де працює 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 |
Вікторина
Розділ «Вікторина»-
Що означає K8s?
Відповідь
K8s — це скорочення для Kubernetes. K + 8 літер (ubernete) + s. -
Яка основна функція Kubernetes?
Відповідь
Оркестрація контейнерів — автоматизація розгортання, масштабування та керування контейнеризованими застосунками через кластер. -
У чому різниця між Docker і Kubernetes?
Відповідь
Docker — це середовище виконання контейнерів (запускає контейнери). Kubernetes — це оркестратор контейнерів (керує контейнерами на кількох машинах, обробляє масштабування, самовідновлення тощо). -
Що означає “декларативна конфігурація” в Kubernetes?
Відповідь
Ви оголошуєте бажаний стан (що ви хочете), і Kubernetes працює, щоб реальність відповідала йому. Ви не даєте покрокових команд. -
Звідки походить Kubernetes?
Відповідь
Google. Він базується на їхній внутрішній системі під назвою Borg. Google передав Kubernetes до CNCF у 2015 році.
Підсумок
Розділ «Підсумок»Kubernetes — це:
- Платформа з відкритим кодом для оркестрації контейнерів
- Автоматизує розгортання, масштабування та керування
- Використовує декларативну конфігурацію (бажаний стан)
- Працює будь-де (хмара, локально, на межі)
Kubernetes робить:
- Розгортає та оновлює контейнери
- Масштабує застосунки вгору та вниз
- Самовідновлюється при збоях
- Забезпечує виявлення сервісів
- Керує конфігурацією
Ключовий висновок: Kubernetes — це НЕ середовище виконання контейнерів. Він оркеструє контейнери, які фактично запускає containerd або інші середовища виконання.
Наступний модуль
Розділ «Наступний модуль»Модуль 1.2: Основи контейнерів - Розуміння контейнерів перед зануренням в архітектуру Kubernetes.