Ответ
Kubernetes (K8s) — это система оркестрации контейнеризированных приложений с открытым исходным кодом. Её основное назначение — автоматизация развертывания, масштабирования и управления контейнерами.
Ключевые задачи и функции:
- Оркестрация и развертывание: Автоматический запуск контейнеров на кластере нод согласно декларативным конфигурациям (YAML-манифестам).
- Масштабирование: Автоматическое (Horizontal Pod Autoscaler) или ручное увеличение/уменьшение количества реплик приложения (Pods) на основе нагрузки или метрик.
- Отказоустойчивость и самовосстановление:
- Перезапуск контейнеров при их падении.
- Перераспределение Pods при отказе ноды.
- Проверки жизнеспособности (Liveness, Readiness Probes).
- Сетевое взаимодействие и балансировка нагрузки:
- Сервисы (Services) обеспечивают стабильную сетевую точку доступа к динамическому набору Pods.
- Встроенная балансировка трафика между Pods.
- Управление конфигурацией и секретами:
- ConfigMaps для хранения конфигурационных данных.
- Secrets для безопасного хранения чувствительной информации (пароли, токены).
- Хранение данных: Поддержка подключения различных типов постоянных томов (Persistent Volumes) к контейнерам.
Пример Deployment для запуска 3 реплик приложения:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app-container
image: my-registry/my-app:v1.0
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: app-config
Почему это важно: Kubernetes абстрагирует инфраструктуру, позволяя разработчикам декларативно описывать желаемое состояние приложения, а система сама приводит кластер к этому состоянию.