Ответ
Kubernetes (часто сокращаемый до k8s) — это open-source платформа для оркестрации контейнеров, которая автоматизирует развертывание, масштабирование и управление контейнеризированными приложениями.
Простыми словами, Kubernetes управляет вашими контейнерами (например, Docker) в продакшене, чтобы они работали надежно и эффективно.
Ключевые задачи, которые решает Kubernetes:
- Автоматическое масштабирование (Scaling): Автоматически увеличивает или уменьшает количество работающих контейнеров (подов) в зависимости от нагрузки (CPU, память).
- Самовосстановление (Self-healing): Перезапускает упавшие контейнеры, заменяет их и перераспределяет нагрузку с отказавших узлов, обеспечивая отказоустойчивость.
- Обновления и откаты без простоя (Rollouts & Rollbacks): Позволяет постепенно обновлять приложение (rolling updates) и быстро откатываться к предыдущей версии в случае проблем.
- Обнаружение сервисов и балансировка нагрузки (Service Discovery & Load Balancing): Предоставляет сервисам внутренние DNS-имена и распределяет сетевой трафик между контейнерами, чтобы ни один из них не был перегружен.
- Управление конфигурациями и секретами (Configuration & Secret Management): Позволяет хранить и управлять чувствительными данными (пароли, токены) и конфигурациями отдельно от образов контейнеров.
Пример манифеста для развертывания Nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Указываем, что хотим 3 работающих экземпляра
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Kubernetes стал стандартом де-факто для управления микросервисной архитектурой в облачных и гибридных средах.