Определение простыми словами
Kubernetes — это «диспетчер» для контейнеров. Вы описываете в YAML-манифесте, какие сервисы должны работать, сколько копий каждого и какие ресурсы им нужны. Kubernetes сам выбирает свободные серверы в кластере, запускает там контейнеры, следит за их состоянием и поднимает заново, если что-то упало. Если нагрузка растёт — добавляет реплики, если падает — снимает. Администратору не нужно вручную ходить по серверам и перезапускать процессы: всё делается через kubectl или GitOps-конвейер.
Изначально проект родился в Google как переосмысление внутренней системы Borg, в 2015 году был передан в CNCF и за 8 лет стал индустриальным стандартом. Сегодня Kubernetes лежит под продуктами Spotify, Booking, Tinkoff, Сбера, Яндекса.
Сравнение
| Параметр | Kubernetes | Docker + Compose | Bare-metal с systemd |
|---|---|---|---|
| Масштаб | 1–10 000+ узлов | 1 узел | 1 узел |
| Самовосстановление | Автоматическое | restart: always | Restart= в unit-файле |
| Балансировка | Service + Ingress | Только nginx руками | Только nginx руками |
| Порог входа | Высокий | Низкий | Средний |
| Когда нужен | Микросервисы, HA, мультитенант | 1–5 сервисов | Монолит, классика |
Кейсы использования
- Микросервисная архитектура. 20+ сервисов с разными релизными циклами — Kubernetes даёт единый rolling-update, canary и blue-green из коробки.
- SaaS с пиковой нагрузкой. HorizontalPodAutoscaler масштабирует поды по CPU/RPS — днём 50 реплик, ночью 5.
- Мультитенантные платформы. Namespaces + ResourceQuota изолируют клиентов на одном кластере.
- CI/CD и preview-окружения. Каждый pull request — отдельный namespace со своим доменом.
- Когда НЕ стоит: один лендинг, монолит, команда из 1 человека без DevOps-опыта. Кластер съест больше ресурсов, чем сами приложения, и потребует постоянной поддержки.
Технические детали
Архитектура — control plane (api-server, etcd, scheduler, controller-manager) и worker-узлы с kubelet и container runtime (Docker, containerd, CRI-O). Базовая единица — pod: один или несколько контейнеров с общей сетью и томами. Установка кластера на голой машине через kubeadm:
apt install -y kubeadm kubelet kubectl
kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
kubectl get nodes
Под Kubernetes нужен запас ресурсов: control plane требует от 2 vCPU и 2 ГБ RAM, каждый worker — минимум 2 ГБ, иначе kubelet будет упираться в OOM. Подобрать VPS под кластер можно в каталоге, для продакшна берите минимум 3 узла, чтобы переживать падение мастера.
🔥 Где это применяется
Частые вопросы
Чем Kubernetes отличается от Docker?
Docker запускает один контейнер на одном хосте. Kubernetes управляет группой хостов и распределяет по ним сотни контейнеров, следит за их здоровьем, балансирует трафик и автоматически масштабирует. Docker — кубик, Kubernetes — конструктор из кубиков.
Сколько ресурсов нужно для тестового кластера?
Минимум — один узел с 2 vCPU и 2 ГБ RAM на k3s или Minikube. Для боевого HA-кластера — 3 control-plane по 2 vCPU/4 ГБ и от 2 worker-узлов с запасом под рабочие поды.
Нужен ли Kubernetes небольшому проекту?
Чаще нет. Если у вас 1–5 сервисов и нет требований к нулевому даунтайму, Docker Compose покрывает задачу с меньшими накладными расходами. Kubernetes окупается с десятка сервисов или в команде 5+ инженеров.
Можно ли поставить k8s на VPS с OpenVZ?
Нет, OpenVZ не даёт нужный уровень изоляции и поддержку cgroups v2. Берите VPS на KVM, иначе kubelet не запустится корректно.