Kubernetes (k8s) — система оркестрации контейнеров с открытым исходным кодом. Автоматизирует деплой, масштабирование и управление контейнеризованными приложениями. k8s — сокращение: 8 букв между K и s.
Как работает
Kubernetes управляет кластером узлов — физических или виртуальных машин. Control Plane (мастер-узел) принимает решения: где запустить контейнер, как перераспределить нагрузку при отказе, когда масштабировать. Worker nodes выполняют команды — запускают контейнеры через containerd.
Компоненты Control Plane: kube-apiserver (REST API для всех операций), etcd (хранилище состояния кластера), kube-scheduler (выбирает узел для Pod), kube-controller-manager (управляет репликами и ресурсами).
Ключевые абстракции
- Pod
- Минимальная единица деплоя. Один или несколько контейнеров с общей сетью и хранилищем. Контейнеры в Pod общаются через localhost.
- Deployment
- Управляет репликами Pod. Обеспечивает rolling update без простоя и откат при ошибке.
- Service
- Стабильный сетевой адрес для группы Pod. Балансирует трафик между репликами независимо от их IP.
- ConfigMap / Secret
- Хранение конфигурации и секретов отдельно от образа контейнера.
- PersistentVolume
- Абстракция хранилища для stateful-приложений — баз данных, файловых хранилищ.
- Ingress
- Маршрутизация HTTP/HTTPS-трафика на сервисы по доменному имени и пути URL.
История
Google открыл Kubernetes в 2014 году на основе внутренней системы Borg, которая управляла миллиардами контейнеров в Google с 2003 года. В 2016 году проект передан в Cloud Native Computing Foundation (CNCF). К 2024 году k8s стал стандартом оркестрации: его используют AWS (EKS), Google (GKE), Microsoft (AKS), Yandex Cloud и Selectel.
Деплой приложения
# Создать Deployment (3 реплики nginx)
kubectl create deployment nginx --image=nginx:1.25 --replicas=3
# Проверить статус
kubectl get pods
kubectl get deployments
# Обновить образ (rolling update)
kubectl set image deployment/nginx nginx=nginx:1.26
# Откат
kubectl rollout undo deployment/nginx
# Масштабирование
kubectl scale deployment/nginx --replicas=5
Helm и управление приложениями
Helm — пакетный менеджер для Kubernetes. Позволяет устанавливать сложные приложения одной командой: helm install my-db bitnami/postgresql. Chart описывает все k8s-ресурсы приложения с параметризованными шаблонами.
На что обращать внимание
Kubernetes сложен в настройке и эксплуатации. Минимальный кластер требует три master-узла для высокой доступности. Для небольших проектов (до 10 сервисов) Docker Compose или Coolify проще и дешевле. Managed k8s (EKS, GKE, YandexCloud MK8s) снимают операционную нагрузку по управлению Control Plane, но стоят дороже самостоятельного развёртывания.
Мониторинг кластера
Встроенный kubectl top nodes и kubectl top pods показывает потребление CPU и RAM. Полноценный мониторинг строится на стеке Prometheus + Grafana — устанавливается через Helm chart kube-prometheus-stack. Алерты на исчерпание ресурсов и падение Pod настраиваются в Alertmanager.