Заметки айтишника
Kubernetes для production: когда компании нужен собственный кластер
Kubernetes нужен, когда у компании много сервисов в контейнерах, их нужно автоматически масштабировать, обновлять без остановки и перезапускать при сбоях. Для одного-двух приложений обычно достаточно Docker Compose. Минимальный отказоустойчивый кластер Kubernetes для production — три управляющих узла и не меньше трёх рабочих, плюс хранилище, мониторинг, резервное копирование и защита доступа. Главные затраты при собственном кластере — не серверы, а специалисты, которые его обслуживают. Альтернатива — managed Kubernetes или кластер у провайдера, который берёт эксплуатацию на себя.
Kubernetes стал стандартом для запуска приложений в контейнерах. Но стандарт не означает, что он нужен всем. Кластер решает реальные проблемы масштабирования и надёжности, но добавляет сложности, которые небольшой команде могут оказаться не по силам.

Разберём, когда компании действительно нужен собственный кластер Kubernetes, из чего он состоит в production и во что обходится.

Что такое Kubernetes и какие задачи он решает

Kubernetes (K8s) — платформа для управления контейнерными приложениями. Разработчики упаковывают приложение в контейнер, например с помощью Docker, а Kubernetes решает, на каком сервере его запустить, следит за его состоянием и распределяет нагрузку.

Что берёт на себя Kubernetes:

  • перезапуск при сбоях — если контейнер или сервер упал, приложение автоматически запускается на другом узле;
  • масштабирование — при росте нагрузки добавляются новые экземпляры приложения, при спаде лишние убираются;
  • обновления без простоя — новая версия выкатывается постепенно, и при проблемах можно откатиться;
  • балансировка — запросы распределяются между экземплярами приложения;
  • единый способ описания — вся инфраструктура описана в конфигурационных файлах, которые хранятся в системе контроля версий.


Связка Docker и Kubernetes работает так: Docker (или другой инструмент) создаёт образ контейнера, а Kubernetes запускает и обслуживает эти контейнеры на кластере серверов.

Когда компании нужен Kubernetes, а когда нет

СитуацияЧто подходит
Одно-два приложения, небольшая нагрузка, один серверDocker Compose или обычные виртуальные машины
Десяток и больше сервисов, частые релизы, несколько команд разработкиKubernetes
Нагрузка сильно меняется в течение дня или сезонаKubernetes с автомасштабированием
Требуется обновлять сервисы без остановкиKubernetes
Нужно запускать модели машинного обучения на GPU для нескольких командKubernetes с поддержкой GPU
В команде нет специалиста, знакомого с KubernetesManaged Kubernetes или кластер у провайдера
Признаки того, что пора переходить на Kubernetes: развёртывание новой версии превратилось в ручную процедуру на полдня, серверы загружены неравномерно, а при падении одного сервиса по ночам приходится вручную его поднимать.

Архитектура Kubernetes: из чего состоит кластер

Кластер Kubernetes состоит из двух типов узлов.

Управляющие узлы (control plane) хранят состояние кластера и принимают решения: API-сервер, планировщик (scheduler), контроллеры и база данных etcd. Если управляющий узел один и он выходит из строя, кластер теряет управление. Поэтому в production их делают три: etcd сохраняет работоспособность, пока доступно большинство узлов, то есть два из трёх.

Рабочие узлы (worker nodes) запускают приложения. Каждое приложение работает в одном или нескольких подах. Под (Kubernetes pod) — минимальная единица развёртывания: один или несколько контейнеров с общей сетью и хранилищем.

Вокруг этого ядра в production нужны:
КомпонентЗачемПримеры
Сетевой плагин (CNI)Связь между подами, сетевые политикиCalico, Cilium
Хранилище (CSI)Постоянные тома для баз данных и файловCeph, Longhorn, СХД с драйвером CSI
Ingress или Gateway APIПриём внешних запросов и маршрутизацияNGINX Ingress, Traefik
Реестр образовХранение образов контейнеровHarbor
МониторингМетрики узлов и приложений, оповещенияPrometheus, Grafana
ЛогированиеСбор логов всех контейнеровLoki, OpenSearch
Резервное копированиеКопии ресурсов кластера и данныхVelero, снимки etcd
Доставка приложенийАвтоматическое развёртывание из GitArgo CD, Flux, Helm
Kubernetes Helm — пакетный менеджер для кластера. Он позволяет устанавливать и обновлять приложения, включая системные компоненты из таблицы, одной командой по готовым шаблонам — чартам.

Какие серверы нужны для кластера Kubernetes

Пример минимального production-кластера для десятка сервисов средней нагрузки:
РольКоличествоРесурсы на узел
Управляющие узлы34 ядра, 8–16 ГБ памяти, SSD
Рабочие узлы3 и больше8–16 ядер, 32–64 ГБ памяти
Узлы хранилища (если хранилище внутри кластера)3Диски под данные, сеть 10 Гбит/с и выше
Балансировщик нагрузки2Небольшие виртуальные машины
Несколько практических деталей:

  • etcd требователен к дискам. Он записывает каждое изменение состояния на диск и чувствителен к задержкам, поэтому управляющие узлы размещают на SSD.
  • Три рабочих узла — минимум. При отказе одного оставшиеся должны принять его нагрузку, поэтому каждый узел не стоит загружать больше чем на 60–70%.
  • Узлы могут быть виртуальными. Кластер часто разворачивают на виртуальных машинах поверх физических серверов. Главное — чтобы управляющие узлы оказались на разных физических хостах.

Ресурсы приложений: requests и limits

Kubernetes распределяет поды по узлам на основе заявленных ресурсов. Для каждого контейнера указывают:

  • requests — сколько процессора и памяти контейнеру гарантированно нужно. По этим значениям планировщик выбирает узел;
  • limits — сколько контейнер может использовать максимум.


Если лимит памяти превышен, контейнер принудительно перезапускается. Если requests не указаны вовсе, планировщик не знает реальной потребности и может поставить слишком много подов на один узел. Правильно заданные requests и limits — одна из самых частых мер, которые делают кластер в production стабильнее.

Масштабирование в Kubernetes

В Kubernetes три уровня масштабирования:

  • HPA (Horizontal Pod Autoscaler) добавляет или убирает экземпляры приложения в зависимости от загрузки процессора, памяти или собственных метрик;
  • VPA (Vertical Pod Autoscaler) подбирает объём ресурсов для каждого пода;
  • Cluster Autoscaler добавляет и убирает сами узлы кластера.


Горизонтальное масштабирование подов работает в любом кластере. А автоматическое добавление узлов требует, чтобы инфраструктура умела быстро создавать новые серверы: это есть у облачных и managed-решений и у кластеров на платформах виртуализации. На физических серверах узлы добавляют вручную, поэтому запас ресурсов планируют заранее.

Kubernetes для машинного обучения и GPU

Kubernetes всё чаще используют для ML-задач: обучения моделей, запуска инференса и работы исследовательских сред вроде JupyterHub. Для работы с видеокартами устанавливают NVIDIA GPU Operator — он подключает драйверы и позволяет запрашивать GPU так же, как процессор и память.

Одну мощную видеокарту можно разделить между несколькими задачами. Технология MIG на картах уровня A100 и H100 делит GPU на изолированные части с собственной памятью. Режим разделения по времени (time slicing) подходит для небольших задач, которым не нужна карта целиком.

Безопасность кластера

Базовый набор мер для production:

  • RBAC — у каждого пользователя и сервиса только те права, которые нужны;
  • сетевые политики (Network Policy) — поды могут общаться только с теми, с кем положено;
  • секреты — пароли и ключи хранятся в объектах Secret с включённым шифрованием или во внешнем хранилище секретов, а не в коде;
  • проверка образов — сканирование на уязвимости до попадания в кластер;
  • регулярные обновления — новые минорные версии Kubernetes выходят примерно три раза в год, каждая поддерживается около 14 месяцев. Кластер, который не обновлялся пару лет, работает на версии без исправлений безопасности.

Отказоустойчивость и резервное копирование

Отказоустойчивый Kubernetes — это три управляющих узла, несколько экземпляров каждого критичного приложения на разных узлах, резервированная сеть и хранилище.

Но и для такого кластера нужны резервные копии. Резервное копирование Kubernetes включает:

  • снимки etcd — состояние кластера;
  • копии манифестов и ресурсов, например с помощью Velero;
  • копии данных постоянных томов (PV);
  • хранение копий вне кластера, лучше на другой площадке.


Если вся конфигурация хранится в Git и разворачивается автоматически, кластер можно пересобрать с нуля, а из резервной копии восстановить только данные.

Свой кластер или managed Kubernetes

КритерийСобственный кластерManaged Kubernetes или кластер у провайдера
КонтрольПолный: версии, настройки, железоОграничен возможностями провайдера
Кто обслуживает управляющие узлы и обновленияВаша командаПровайдер
Требования к командеНужен опытный DevOps-инженер, лучше дваДостаточно умения работать с кластером
Размещение данныхГде угодно, включая свою площадкуТам, где инфраструктура провайдера
СтоимостьСерверы плюс работа специалистовОплата ресурсов и управления
Стоимость Kubernetes-кластера складывается не только из серверов. Установка, обновления, мониторинг, разбор инцидентов требуют постоянной работы квалифицированных специалистов, и именно она чаще всего определяет итоговую стоимость собственного кластера. Если такой экспертизы в компании нет, рациональнее отдать эксплуатацию провайдеру.

Как развернуть Kubernetes для production: порядок действий

  • Опишите сервисы: сколько их, какие ресурсы потребляют, какие из них хранят данные.
  • Решите, кто будет обслуживать кластер: своя команда или провайдер.
  • Выберите площадку: собственные серверы в ЦОД, виртуальные машины или кластер у провайдера.
  • Спланируйте три управляющих узла и рабочие узлы с запасом на отказ одного из них.
  • Выберите хранилище, сетевой плагин и способ приёма внешних запросов.
  • Настройте мониторинг, логирование и оповещения до переноса первых сервисов.
  • Настройте резервное копирование и проверьте восстановление.
  • Переносите сервисы постепенно, начиная с наименее критичных.

Типичные ошибки

  • Kubernetes ради Kubernetes. Два приложения, которые прекрасно работали на одном сервере, получают сложную инфраструктуру и отдельного человека на её поддержку.
  • Один управляющий узел. Его отказ оставляет кластер без управления.
  • Приложения без requests и limits. Один сервис съедает память узла, и падают соседние.
  • Базы данных в кластере без продуманного хранилища. Данные теряются при переезде пода.
  • Нет резервного копирования etcd и томов. Восстановление после сбоя превращается в ручную сборку.
  • Кластер не обновляется. Через два года — версия без поддержки и сложный многоступенчатый переход.

Кластеры Kubernetes в Иркутске: чем поможет Интерфоника

Интерфоника — технологический провайдер из Иркутска с собственной оптической сетью и двумя ЦОДами. Среди услуг для IT-команд — кластеры Kubernetes для запуска контейнерных окружений.

  • Кластеры Kubernetes с автомасштабированием, мониторингом, резервным копированием и диагностикой уязвимостей.
  • Собственные ЦОДы. Резервирование по всем ключевым системам: двойное электропитание, продуманное охлаждение, пожаротушение. Площадки соответствуют требованиям 152-ФЗ и ГОСТов.
  • Прямой канал до ЦОДа. Бесплатное прямое подключение по оптике со скоростью до 100 Гбит/с. Можно строить гибридные схемы, когда часть сервисов работает в офисе, а часть — в кластере в ЦОДе.
  • GPU и среда для ML. Серверы с GPU для машинного обучения и JupyterHub для разработки, анализа данных и обучения моделей.
  • Инженеры без очередей. Прямая связь с техническими специалистами, которые могут включиться в задачу сразу, без тикетов и бюрократии.
  • Бесплатная площадка для экспериментов. IT-специалистам Интерфоника безвозмездно выделяет свободные ресурсы под тестовые среды без ограничений по стеку — можно развернуть тестовый кластер, проверить нагрузку и конфигурацию.


Руководитель отдела АСУ компании КрайсНефть в отзыве на сайте отмечает, что Интерфоника глубоко разбирается в архитектуре и предлагает решения, которые стабильно работают в production.

Обсудим кластер Kubernetes для ваших сервисов

Расскажите, какие сервисы нужно запустить и какая у них нагрузка, — инженер предложит схему кластера и вариант размещения.

Оставить заявку

Частые вопросы

Что такое Kubernetes простыми словами?
Это платформа, которая автоматически запускает приложения в контейнерах на группе серверов, следит за их работой, перезапускает при сбоях, масштабирует под нагрузку и обновляет без остановки.

Когда компании нужен Kubernetes?
Когда сервисов много, релизы частые, нагрузка меняется, а простои при обновлениях и сбоях недопустимы. Для одного-двух приложений на одном сервере обычно достаточно Docker Compose.

Сколько серверов нужно для кластера Kubernetes?
Для отказоустойчивого production-кластера — три управляющих узла и не меньше трёх рабочих. Узлы могут быть виртуальными машинами, но управляющие узлы должны работать на разных физических серверах.

Чем отличаются Docker и Kubernetes?
Docker упаковывает приложение в контейнер и запускает его на одном сервере. Kubernetes управляет множеством контейнеров на группе серверов: распределяет их, масштабирует, перезапускает и обновляет.

Что выбрать: свой кластер Kubernetes или managed?
Свой кластер даёт полный контроль и подходит, если в компании есть опытные DevOps-инженеры. Managed Kubernetes или кластер у провайдера снимает с команды обслуживание управляющих узлов и обновления.

Можно ли запускать в Kubernetes задачи на GPU?
Да. С помощью NVIDIA GPU Operator видеокарты становятся ресурсом кластера, который можно запрашивать для обучения моделей, инференса и сред вроде JupyterHub.
15.10.2026