Зачем нужен Kubernetes
Когда контейнеров становится много, кто-то должен ими управлять — этим и занимается Kubernetes.
Kubernetes (K8s) — система оркестрации контейнеров: она сама запускает, масштабирует, обновляет и восстанавливает контейнеризованные приложения на кластере серверов.
Вы уже умеете запускать контейнер через docker run. На одном ноутбуке этого достаточно. Но в продакшене всё иначе: приложение должно работать на нескольких серверах, переживать падение машины, выдерживать всплески нагрузки и обновляться без простоя. Делать это вручную через десятки команд docker невозможно.
Какую проблему решает оркестратор
Представьте 20 серверов и 200 контейнеров. Возникают вопросы, на которые Docker сам по себе не отвечает:
- Размещение. На каком из 20 серверов запустить новый контейнер, чтобы хватило памяти и CPU?
- Самовосстановление. Контейнер упал ночью — кто заметит и перезапустит его?
- Масштабирование. Пришёл трафик — как быстро поднять ещё 10 копий, а потом убрать их?
- Обновления. Как выкатить новую версию без простоя и откатиться, если что-то сломалось?
- Сеть. Как контейнеры на разных серверах находят друг друга по имени?
Kubernetes берёт все эти заботы на себя. Вы описываете желаемое состояние («хочу 3 копии приложения»), а кластер сам приводит реальность к этому состоянию и удерживает её.
Самовосстановление — ключевая идея
Это главное, ради чего стоит изучать Kubernetes. Кластер постоянно сравнивает желаемое состояние с фактическим и устраняет расхождение. Упал контейнер — поднимется новый. Вышел из строя сервер — его нагрузка переедет на живые узлы. Кто-то случайно удалил копию приложения — она вернётся через секунды.
Цикл управления (reconciliation loop): «сделать так, чтобы фактическое состояние совпало с желаемым» — это работает непрерывно, а не один раз при запуске.
Когда Kubernetes не нужен
Это не «серебряная пуля». Для одного маленького сервиса на одном сервере Kubernetes — избыточная сложность: проще docker compose. Оркестратор оправдан, когда у вас несколько сервисов, требования к отказоустойчивости и команда, готовая разбираться с кластером.
| Задача | Docker сам | Kubernetes |
| Запустить один контейнер | Да | Избыточно |
| Десятки контейнеров на многих серверах | Тяжело вручную | Штатно |
| Авто-перезапуск при падении | Частично (restart policy) | Да, по всему кластеру |
| Масштабирование под нагрузку | Вручную | Авто (HPA) |
Итог
- Kubernetes — оркестратор контейнеров для множества серверов.
- Вы описываете желаемое состояние, кластер сам его поддерживает.
- Главные возможности: размещение, самовосстановление, масштабирование, обновления без простоя.