Ответ
Kubernetes (K8s) — это система оркестрации контейнеризированных приложений с открытым исходным кодом. Она автоматизирует развертывание, масштабирование и управление приложениями, упакованными в контейнеры (например, Docker).
Основные решаемые проблемы:
- Масштабирование: Автоматическое увеличение/уменьшение количества реплик приложения в зависимости от нагрузки.
- Отказоустойчивость: Самовосстановление — перезапуск контейнеров при сбоях и их перераспределение на работоспособные узлы.
- Декларативная конфигурация: Описание желаемого состояния системы ("должно быть 5 копий приложения"), а K8s самостоятельно приводит систему к этому состоянию.
- Управление сетевым трафиком: Балансировка нагрузки между экземплярами приложения и механизмы для обнаружения сервисов.
- Управление обновлениями: Поддержка стратегий rolling updates и rollback с минимальным временем простоя.
Ключевые абстракции (ресурсы):
- Pod: Наименьшая единица развертывания. Контейнер (или группа тесно связанных контейнеров), разделяющих сеть и хранилище.
- Deployment: Декларативное описание жизненного цикла Pod'ов (реплики, стратегия обновления).
- Service: Абстракция для доступа к группе Pod'ов как к единому сетевому сервису (стабильный IP/DNS).
Пример манифеста Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-web-app
spec:
replicas: 3 # Желаемое количество идентичных Pod'ов
selector:
matchLabels:
app: web
template: # Шаблон для создания Pod'ов
metadata:
labels:
app: web
spec:
containers:
- name: app-container
image: myregistry/web-app:latest
ports:
- containerPort: 8080
Почему это важно: Kubernetes стал отраслевым стандартом для развертывания микросервисных архитектур, обеспечивая переносимость между облаками, эффективное использование ресурсов и высокую доступность приложений.