Kubernetes для production: когда компании нужен собственный кластер
Kubernetes нужен, когда у компании много сервисов в контейнерах, их нужно автоматически масштабировать, обновлять без остановки и перезапускать при сбоях. Для одного-двух приложений обычно достаточно Docker Compose. Минимальный отказоустойчивый кластер Kubernetes для production — три управляющих узла и не меньше трёх рабочих, плюс хранилище, мониторинг, резервное копирование и защита доступа. Главные затраты при собственном кластере — не серверы, а специалисты, которые его обслуживают. Альтернатива — managed Kubernetes или кластер у провайдера, который берёт эксплуатацию на себя.
Kubernetes стал стандартом для запуска приложений в контейнерах. Но стандарт не означает, что он нужен всем. Кластер решает реальные проблемы масштабирования и надёжности, но добавляет сложности, которые небольшой команде могут оказаться не по силам.
Разберём, когда компании действительно нужен собственный кластер Kubernetes, из чего он состоит в production и во что обходится.
Разберём, когда компании действительно нужен собственный кластер Kubernetes, из чего он состоит в production и во что обходится.
Что такое Kubernetes и какие задачи он решает
Kubernetes (K8s) — платформа для управления контейнерными приложениями. Разработчики упаковывают приложение в контейнер, например с помощью Docker, а Kubernetes решает, на каком сервере его запустить, следит за его состоянием и распределяет нагрузку.
Что берёт на себя Kubernetes:
Связка Docker и Kubernetes работает так: Docker (или другой инструмент) создаёт образ контейнера, а Kubernetes запускает и обслуживает эти контейнеры на кластере серверов.
Что берёт на себя Kubernetes:
- перезапуск при сбоях — если контейнер или сервер упал, приложение автоматически запускается на другом узле;
- масштабирование — при росте нагрузки добавляются новые экземпляры приложения, при спаде лишние убираются;
- обновления без простоя — новая версия выкатывается постепенно, и при проблемах можно откатиться;
- балансировка — запросы распределяются между экземплярами приложения;
- единый способ описания — вся инфраструктура описана в конфигурационных файлах, которые хранятся в системе контроля версий.
Связка Docker и Kubernetes работает так: Docker (или другой инструмент) создаёт образ контейнера, а Kubernetes запускает и обслуживает эти контейнеры на кластере серверов.
Когда компании нужен Kubernetes, а когда нет
Признаки того, что пора переходить на Kubernetes: развёртывание новой версии превратилось в ручную процедуру на полдня, серверы загружены неравномерно, а при падении одного сервиса по ночам приходится вручную его поднимать.
Архитектура Kubernetes: из чего состоит кластер
Кластер Kubernetes состоит из двух типов узлов.
Управляющие узлы (control plane) хранят состояние кластера и принимают решения: API-сервер, планировщик (scheduler), контроллеры и база данных etcd. Если управляющий узел один и он выходит из строя, кластер теряет управление. Поэтому в production их делают три: etcd сохраняет работоспособность, пока доступно большинство узлов, то есть два из трёх.
Рабочие узлы (worker nodes) запускают приложения. Каждое приложение работает в одном или нескольких подах. Под (Kubernetes pod) — минимальная единица развёртывания: один или несколько контейнеров с общей сетью и хранилищем.
Вокруг этого ядра в production нужны:
Управляющие узлы (control plane) хранят состояние кластера и принимают решения: API-сервер, планировщик (scheduler), контроллеры и база данных etcd. Если управляющий узел один и он выходит из строя, кластер теряет управление. Поэтому в production их делают три: etcd сохраняет работоспособность, пока доступно большинство узлов, то есть два из трёх.
Рабочие узлы (worker nodes) запускают приложения. Каждое приложение работает в одном или нескольких подах. Под (Kubernetes pod) — минимальная единица развёртывания: один или несколько контейнеров с общей сетью и хранилищем.
Вокруг этого ядра в production нужны:
Kubernetes Helm — пакетный менеджер для кластера. Он позволяет устанавливать и обновлять приложения, включая системные компоненты из таблицы, одной командой по готовым шаблонам — чартам.
Какие серверы нужны для кластера Kubernetes
Пример минимального production-кластера для десятка сервисов средней нагрузки:
Несколько практических деталей:
- etcd требователен к дискам. Он записывает каждое изменение состояния на диск и чувствителен к задержкам, поэтому управляющие узлы размещают на SSD.
- Три рабочих узла — минимум. При отказе одного оставшиеся должны принять его нагрузку, поэтому каждый узел не стоит загружать больше чем на 60–70%.
- Узлы могут быть виртуальными. Кластер часто разворачивают на виртуальных машинах поверх физических серверов. Главное — чтобы управляющие узлы оказались на разных физических хостах.
Ресурсы приложений: requests и limits
Kubernetes распределяет поды по узлам на основе заявленных ресурсов. Для каждого контейнера указывают:
Если лимит памяти превышен, контейнер принудительно перезапускается. Если requests не указаны вовсе, планировщик не знает реальной потребности и может поставить слишком много подов на один узел. Правильно заданные requests и limits — одна из самых частых мер, которые делают кластер в production стабильнее.
- requests — сколько процессора и памяти контейнеру гарантированно нужно. По этим значениям планировщик выбирает узел;
- limits — сколько контейнер может использовать максимум.
Если лимит памяти превышен, контейнер принудительно перезапускается. Если requests не указаны вовсе, планировщик не знает реальной потребности и может поставить слишком много подов на один узел. Правильно заданные requests и limits — одна из самых частых мер, которые делают кластер в production стабильнее.
Масштабирование в Kubernetes
В Kubernetes три уровня масштабирования:
Горизонтальное масштабирование подов работает в любом кластере. А автоматическое добавление узлов требует, чтобы инфраструктура умела быстро создавать новые серверы: это есть у облачных и managed-решений и у кластеров на платформах виртуализации. На физических серверах узлы добавляют вручную, поэтому запас ресурсов планируют заранее.
- 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) подходит для небольших задач, которым не нужна карта целиком.
Одну мощную видеокарту можно разделить между несколькими задачами. Технология MIG на картах уровня A100 и H100 делит GPU на изолированные части с собственной памятью. Режим разделения по времени (time slicing) подходит для небольших задач, которым не нужна карта целиком.
Безопасность кластера
Базовый набор мер для production:
- RBAC — у каждого пользователя и сервиса только те права, которые нужны;
- сетевые политики (Network Policy) — поды могут общаться только с теми, с кем положено;
- секреты — пароли и ключи хранятся в объектах Secret с включённым шифрованием или во внешнем хранилище секретов, а не в коде;
- проверка образов — сканирование на уязвимости до попадания в кластер;
- регулярные обновления — новые минорные версии Kubernetes выходят примерно три раза в год, каждая поддерживается около 14 месяцев. Кластер, который не обновлялся пару лет, работает на версии без исправлений безопасности.
Отказоустойчивость и резервное копирование
Отказоустойчивый Kubernetes — это три управляющих узла, несколько экземпляров каждого критичного приложения на разных узлах, резервированная сеть и хранилище.
Но и для такого кластера нужны резервные копии. Резервное копирование Kubernetes включает:
Если вся конфигурация хранится в Git и разворачивается автоматически, кластер можно пересобрать с нуля, а из резервной копии восстановить только данные.
Но и для такого кластера нужны резервные копии. Резервное копирование Kubernetes включает:
- снимки etcd — состояние кластера;
- копии манифестов и ресурсов, например с помощью Velero;
- копии данных постоянных томов (PV);
- хранение копий вне кластера, лучше на другой площадке.
Если вся конфигурация хранится в Git и разворачивается автоматически, кластер можно пересобрать с нуля, а из резервной копии восстановить только данные.
Свой кластер или managed Kubernetes
Стоимость Kubernetes-кластера складывается не только из серверов. Установка, обновления, мониторинг, разбор инцидентов требуют постоянной работы квалифицированных специалистов, и именно она чаще всего определяет итоговую стоимость собственного кластера. Если такой экспертизы в компании нет, рациональнее отдать эксплуатацию провайдеру.
Как развернуть Kubernetes для production: порядок действий
- Опишите сервисы: сколько их, какие ресурсы потребляют, какие из них хранят данные.
- Решите, кто будет обслуживать кластер: своя команда или провайдер.
- Выберите площадку: собственные серверы в ЦОД, виртуальные машины или кластер у провайдера.
- Спланируйте три управляющих узла и рабочие узлы с запасом на отказ одного из них.
- Выберите хранилище, сетевой плагин и способ приёма внешних запросов.
- Настройте мониторинг, логирование и оповещения до переноса первых сервисов.
- Настройте резервное копирование и проверьте восстановление.
- Переносите сервисы постепенно, начиная с наименее критичных.
Типичные ошибки
- Kubernetes ради Kubernetes. Два приложения, которые прекрасно работали на одном сервере, получают сложную инфраструктуру и отдельного человека на её поддержку.
- Один управляющий узел. Его отказ оставляет кластер без управления.
- Приложения без requests и limits. Один сервис съедает память узла, и падают соседние.
- Базы данных в кластере без продуманного хранилища. Данные теряются при переезде пода.
- Нет резервного копирования etcd и томов. Восстановление после сбоя превращается в ручную сборку.
- Кластер не обновляется. Через два года — версия без поддержки и сложный многоступенчатый переход.
Кластеры Kubernetes в Иркутске: чем поможет Интерфоника
Интерфоника — технологический провайдер из Иркутска с собственной оптической сетью и двумя ЦОДами. Среди услуг для IT-команд — кластеры Kubernetes для запуска контейнерных окружений.
Руководитель отдела АСУ компании КрайсНефть в отзыве на сайте отмечает, что Интерфоника глубоко разбирается в архитектуре и предлагает решения, которые стабильно работают в production.
- Кластеры Kubernetes с автомасштабированием, мониторингом, резервным копированием и диагностикой уязвимостей.
- Собственные ЦОДы. Резервирование по всем ключевым системам: двойное электропитание, продуманное охлаждение, пожаротушение. Площадки соответствуют требованиям 152-ФЗ и ГОСТов.
- Прямой канал до ЦОДа. Бесплатное прямое подключение по оптике со скоростью до 100 Гбит/с. Можно строить гибридные схемы, когда часть сервисов работает в офисе, а часть — в кластере в ЦОДе.
- GPU и среда для ML. Серверы с GPU для машинного обучения и JupyterHub для разработки, анализа данных и обучения моделей.
- Инженеры без очередей. Прямая связь с техническими специалистами, которые могут включиться в задачу сразу, без тикетов и бюрократии.
- Бесплатная площадка для экспериментов. IT-специалистам Интерфоника безвозмездно выделяет свободные ресурсы под тестовые среды без ограничений по стеку — можно развернуть тестовый кластер, проверить нагрузку и конфигурацию.
Руководитель отдела АСУ компании КрайсНефть в отзыве на сайте отмечает, что Интерфоника глубоко разбирается в архитектуре и предлагает решения, которые стабильно работают в production.
Частые вопросы
Что такое Kubernetes простыми словами?
Это платформа, которая автоматически запускает приложения в контейнерах на группе серверов, следит за их работой, перезапускает при сбоях, масштабирует под нагрузку и обновляет без остановки.
Когда компании нужен Kubernetes?
Когда сервисов много, релизы частые, нагрузка меняется, а простои при обновлениях и сбоях недопустимы. Для одного-двух приложений на одном сервере обычно достаточно Docker Compose.
Сколько серверов нужно для кластера Kubernetes?
Для отказоустойчивого production-кластера — три управляющих узла и не меньше трёх рабочих. Узлы могут быть виртуальными машинами, но управляющие узлы должны работать на разных физических серверах.
Чем отличаются Docker и Kubernetes?
Docker упаковывает приложение в контейнер и запускает его на одном сервере. Kubernetes управляет множеством контейнеров на группе серверов: распределяет их, масштабирует, перезапускает и обновляет.
Что выбрать: свой кластер Kubernetes или managed?
Свой кластер даёт полный контроль и подходит, если в компании есть опытные DevOps-инженеры. Managed Kubernetes или кластер у провайдера снимает с команды обслуживание управляющих узлов и обновления.
Можно ли запускать в Kubernetes задачи на GPU?
Да. С помощью NVIDIA GPU Operator видеокарты становятся ресурсом кластера, который можно запрашивать для обучения моделей, инференса и сред вроде JupyterHub.
Это платформа, которая автоматически запускает приложения в контейнерах на группе серверов, следит за их работой, перезапускает при сбоях, масштабирует под нагрузку и обновляет без остановки.
Когда компании нужен Kubernetes?
Когда сервисов много, релизы частые, нагрузка меняется, а простои при обновлениях и сбоях недопустимы. Для одного-двух приложений на одном сервере обычно достаточно Docker Compose.
Сколько серверов нужно для кластера Kubernetes?
Для отказоустойчивого production-кластера — три управляющих узла и не меньше трёх рабочих. Узлы могут быть виртуальными машинами, но управляющие узлы должны работать на разных физических серверах.
Чем отличаются Docker и Kubernetes?
Docker упаковывает приложение в контейнер и запускает его на одном сервере. Kubernetes управляет множеством контейнеров на группе серверов: распределяет их, масштабирует, перезапускает и обновляет.
Что выбрать: свой кластер Kubernetes или managed?
Свой кластер даёт полный контроль и подходит, если в компании есть опытные DevOps-инженеры. Managed Kubernetes или кластер у провайдера снимает с команды обслуживание управляющих узлов и обновления.
Можно ли запускать в Kubernetes задачи на GPU?
Да. С помощью NVIDIA GPU Operator видеокарты становятся ресурсом кластера, который можно запрашивать для обучения моделей, инференса и сред вроде JupyterHub.
15.10.2026