Новости

Kubernetes для бизнеса: как выбрать способ развертывания и с чего начать

Разобраться в теме нам поможет Владимир Утратенко — BDM платформы «Штурвал», сертифицированной ФСТЭК России.

Зачем разворачивать Kubernetes

Kubernetes (K8s) — это платформа оркестрации контейнеров с открытым исходным кодом, которая автоматизирует развертывание, масштабирование и управление контейнеризованными приложениями. Проект создан Google и с 2014 года развивается под управлением фонда Cloud Native Computing Foundation (CNCF). Установка Kubernetes и его настройка — важная задача для ИТ-команд самых разных масштабов.
Сегодня Kubernetes стал стандартом для запуска контейнерных приложений в продакшене. По данным CNCF Annual Survey 2024, 80% организаций по всему миру используют Kubernetes в производственных окружениях против 66% годом ранее. Ещё 13% находятся в процессе пилотирования или оценки.
В России картина не менее показательна. Согласно исследованию TAdviser и команды «Штурвала» State of Enterprise Kubernetes 2025, 60% крупных российских компаний с выручкой от 10 млрд рублей уже применяют Kubernetes в продуктиве, ещё 15% планируют внедрение. При этом доля иностранных контейнерных решений сократилась до 10% — на рынке практически одинаково востребованы отечественные платформы и open-source.

Когда Kubernetes нужен, а когда — нет

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

Как выбрать способ установки Kubernetes

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

Kubeadm — для базового понимания

Самый базовый инструмент — kubeadm. Именно с него обычно начинают те, кто следует официальной документации Kubernetes. Это нативный инструмент сообщества CNCF, который разворачивает кластер в его ванильном исполнении. Путь рабочий, но не самый простой: kubeadm дает голый кластер без мониторинга, сбора логов, управления пользователями и прочих необходимых в продакшне компонентов — всё это придется подключать отдельно и самостоятельно.

KubeSpray — самый популярный в продакшне

Второй и наиболее распространенный инструмент — KubeSpray. По сути это развернутый набор Ansible-ролей (Ansible — инструмент автоматизации настройки серверов), которые разворачивают Kubernetes-кластер согласно заданным конфигурациям. Как и kubeadm, KubeSpray развивается под крылом CNCF и считается нативным инструментом установки Kubernetes. Путь более гибкий, но тоже требует серьезной экспертизы: каждый новый кластер — это конструктор, который приходится собирать заново, подключая мониторинг, логирование, балансировщики, управление доступом и остальные компоненты.

Minikube и Kind — для обучения и локальной разработки

Minikube и Kind — инструменты для разработки на рабочей станции, когда нужно быстро развернуть Kubernetes локально. Установка K8s в локальном режиме — самый быстрый способ познакомиться с технологией: достаточно одной команды, чтобы получить работающий кластер на ноутбуке. Для тех, кто только разбирается, как установить K8s, это оптимальная точка входа. Однако для продакшена такие решения не подходят: они не рассчитаны на серьезные нагрузки и не обеспечивают необходимого уровня надежности.

K3s, K0s, MiniK8s — для edge-инсталляций

K3s, K0s и MiniK8s — легковесные дистрибутивы для edge-сценариев: установка на один-два узла в условиях жестких ограничений ресурсов. Типичные примеры — промышленные объекты, где кластер Kubernetes разворачивается рядом с датчиками IoT: в химической или горной промышленности, на производственных площадках. Для стандартного корпоративного продакшна эти решения не предназначены.

Платформенные решения — для масштабных инсталляций

Для больших инсталляций «ванильный» Kubernetes рано или поздно перестает быть подходящим вариантом. Это происходит, когда кластеров становится больше, появляются регуляторные требования, географически распределенные площадки, необходимость быстро разворачивать изолированные окружения. В этот момент компании приходят к платформенным решениям, таким как «Штурвал». В подобных продуктах есть собственный инсталлятор, преднастроенный набор компонентов, интеграции, мониторинг и управление, доступные из коробки.
Многие команды начинают с «ванильного» пути, потому что это кажется дешевле, за него не нужно платить. На старте, когда у вас есть один-два кластера, KubeSpray действительно хорошо справляется. Проблемы начинаются, когда количество кластеров увеличивается, появляются более жесткие требования к изоляции и безопасности, а стоимость владения «ванильным» решением — зарплаты инженеров, время на сборку каждого нового кластера, риски при авариях — оказывается выше, чем цена готовой платформы.

Требования к серверу перед установкой Kubernetes

Установка кластера Kubernetes начинается с подготовки инфраструктуры. Прежде чем приступить к созданию кластера Kubernetes, нужно убедиться, что серверы под него готовы. Создание кластера Kubernetes без корректной подготовки окружения — распространенная проблема.
«Kubernetes — это инструмент, который встраивается в существующую инфраструктуру. Если она настроена некорректно, начнутся проблемы, причем независимо от того, „ванильный“ это кластер или платформенное решение», — предупреждает Владимир Утратенко.
Минимум для каждого сервера в кластере — 2 процессорных ядра и 2 ГБ оперативной памяти. На практике для продакшна берут серверы помощнее: от 4 ядер CPU и от 8 ГБ ОЗУ на каждый узел. Для хранения состояния кластера Kubernetes использует базу данных etcd — она очень чувствительна к скорости диска, поэтому SSD здесь не роскошь, а необходимость.

Сеть и порты

Все серверы кластера должны видеть друг друга по сети. На главном сервере (master-нода, она же control plane) должны быть открыты порты 6443, 2379−2380, 10 250, 10 259 и 10 257. Порт 6443 — самый важный: через него kubectl и все узлы обращаются к API кластера. На рабочих серверах (worker-ноды) достаточно открыть порты 10 250, 10 256 и диапазон 30 000−32 767 — последний нужен для доступа к приложениям извне.

Настройки операционной системы

Обязательных пунктов несколько:
  • Отключение swap (механизм использования диска как дополнения к оперативной памяти): Kubernetes управляет ресурсами сам и при включенном swap не запускается.
  • Присвоение каждому серверу уникального имени и сетевого идентификатора. Это особенно актуально при клонировании виртуальных машин.
  • Загрузка сетевых модулей ядра Linux и разрешение маршрутизации трафика через сетевой мост — без этого сетевые плагины Kubernetes (CNI) не заработают.
  • И, наконец, контейнерный рантайм (container runtime) — программа для запуска контейнеров, чаще всего containerd.

Установка Kubernetes с помощью kubeadm на Ubuntu / Debian

Kubeadm — это официальный инструмент установки Kubernetes от сообщества CNCF. Установка Kubernetes Ubuntu или Kubernetes Debian — два самых распространенных сценария в корпоративной среде. Процесс установки Kubernetes на Ubuntu и Debian практически идентичен: оба дистрибутива используют один и тот же пакетный менеджер, имеют хорошую документацию и официальную поддержку kubeadm. Для минимального кластера понадобится минимум два сервера: master-нода (управляет кластером) и worker-нода (запуск приложений).

Этапы установки

  1. Подготовка серверов: отключение swap, загрузка сетевых модулей ядра Linux, включение маршрутизации трафика через сетевой мост.
  2. Установка контейнерного рантайма (containerd или CRI-O) — программы, запускающей сами контейнеры.
  3. Установка компонентов Kubernetes: kubeadm (собирает кластер), kubelet (агент на каждом узле) и kubectl (утилита управления). Версии этих компонентов важно зафиксировать, потому что случайное обновление в продакшне может привести к проблемам с совместимостью.
  4. Запуск инициализации на master-ноде. Kubernetes скачивает образы системных компонентов (API-сервер, планировщик, контроллер, etcd) и настраивает кластер, что занимает несколько минут. По завершении система выдает команду для подключения worker-нод, которую нужно сохранить.
  5. Настройка сети и подключение узлов. Установка CNI-плагина (например, Flannel) — без него поды не смогут общаться между собой. Наконец, на каждом рабочем сервере выполняется сохраненная команда подключения — узел регистрируется в кластере.
Развертывание Kubernetes-кластера через kubeadm считается классическим путем. Установка и настройка по такому сценарию занимает от нескольких часов до целого дня, в зависимости от количества узлов и опыта инженера.

Быстрое развертывание K8s через minikube или K3s

Не всегда нужен полноценный производственный кластер. Для быстрого развертывания обычно используются более простые инструменты, такие как minikube, kind, K3s, K30 и MiniK8s. Minikube и Kind запускают Kubernetes прямо на рабочей станции разработчика: весь кластер работает на одной машине внутри виртуальной среды. Это удобно для проверки приложения в контейнере, тестирования манифеста (файла с описанием работы приложения) или знакомства с Kubernetes.
K3s, K30 и MiniK8s являются облегченными дистрибутивами для edge-сценариев, когда кластер нужен не в дата-центре, а на месте, рядом с оборудованием, датчиками IoT в шахте, на заводе, на удаленной площадке. Работают на одном-двух узлах в условиях жестких ограничений по ресурсам и не подходят для корпоративного продакшна.
Одна из частых ошибок при выборе инструмента — не учитывать будущие требования. K3s под большие нагрузки не заточен, и как только появляются несколько кластеров или регуляторные требования — лёгкие решения уступают место полноценным инструментам или платформенным решениям.

Подключение к кластеру Kubernetes: настройка kubectl

После того как кластер запущен, вашим главным инструментом станет утилита командной строки kubectl. Через неё разворачивают приложения, проверяют состояние кластера, смотрят логи, управляют ресурсами. По сути, kubectl — это пульт управления кластером: вы отдаете команды, а он передает их API-серверу Kubernetes.
Kubectl использует конфигурационный файл kubeconfig, где хранятся адрес API-сервера, сертификаты безопасности и данные авторизации. При установке через kubeadm этот файл создается автоматически — kubectl готов к работе сразу после инициализации кластера. Чтобы проверить подключение, достаточно запросить список нод: если вернулся список серверов со статусом Ready — всё работает правильно. Если нет — проблема обычно в адресе API-сервера, сертификатах или закрытом порте 6443 на master-ноде.

Развертывание приложения в Kubernetes

Когда кластер готов и kubectl настроен, можно запускать первое приложение. В Kubernetes это делается не напрямую — вы описываете желаемое состояние системы в специальном файле, манифесте, и передаете его кластеру. Kubernetes сам разбирается, где и как это запустить.
Под манифестом подразумевается текстовый файл в формате YAML, где описано, как должно работать приложение: какой образ контейнера использовать, сколько копий запустить, сколько ресурсов выделить, как организовать сетевой доступ. Основной принцип Kubernetes — описываешь, что хочешь получить, а не как это сделать.

Основные объекты при развертывании

Чтобы запустить приложение, обычно создают несколько связанных объектов.
  • Deployment — главный объект для запуска, описывающий, как копии приложения должны работать и обновляться. При этом, если одна копия упадет, Kubernetes автоматически запустит новую.
  • Pod (под) — минимальная единица запуска, внутри которой работает один или несколько контейнеров.
  • Namespace (неймспейс) — логический способ разделения кластера на изолированные зоны (например, можно держать тестовое и продакшн-окружение в одном кластере, но в разных неймспейсах).
  • Service (сервис) — объект, который открывает доступ к приложению. Поднятие сервисов в Kubernetes — стандартная часть любого деплоя: без сервиса приложение работает, но снаружи к нему не достучаться.
При первом деплое в кластер есть несколько моментов, которые легко упустить, но которые определяют, будет ли приложение работать корректно.
Первое — соответствие меток и селекторов. В Kubernetes объекты связываются между собой через метки. Сервис находит нужные поды именно по меткам, и если они не совпадают, трафик не доходит до приложения, хотя внешне всё выглядит запущенным.
Второе — аннотации. Многие компоненты Kubernetes реализуют дополнительную функциональность через аннотации — пометки в манифесте. Без нужной аннотации часть функций просто не активируется.
Третье — лимиты ресурсов. Важно указывать, сколько памяти и процессорного времени может потреблять приложение. Иначе одно «прожорливое» приложение заберет ресурсы у соседних.

Частые ошибки при установке Kubernetes и как их исправить

Даже опытные инженеры сталкиваются с проблемами при установке и настройке Kubernetes. Владимир Утратенко выделяет две главные причины, из которых вырастает большинство трудностей.

1. Не читают документацию

Звучит банально, но это действительно самая распространенная ошибка, особенно актуальная для платформенных решений. Их документация, в отличие от официальной документации «ванильного» Kubernetes, заточена под конкретные пользовательские сценарии и написана как практическое руководство.

2. Неправильно настраивают инфраструктуру

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

Особый случай: закрытые окружения без доступа в интернет

Отдельный пласт сложностей возникает при установке Kubernetes в air-gapped-окружениях — инфраструктуре, полностью изолированной от интернета. Типичная ситуация для крупного российского enterprise: финансовый сектор, госструктуры, промышленность — везде, где есть регуляторные требования к безопасности периметра. Развертывание Kubernetes в таких условиях отличается от обычного сценария.
Главная специфическая проблема — отсутствие доступа к внешним реестрам образов контейнеров. В обычных условиях Kubernetes скачивает образы из интернета. В закрытом окружении их нужно хранить локально — значит, необходимо развернуть собственное хранилище образов. Без него кластер просто не запустится.
Дальше — повышенные требования к безопасности: сканирование образов на уязвимости, контроль того, какие образы попадают в реестр, подпись образов и проверка этой подписи при запуске в кластере. Всё это нужно, чтобы никто не мог незаметно «принести с улицы» потенциально опасный контейнер.

Как выбрать подход к развертыванию Kubernetes

Правильного ответа на вопрос «как развернуть Kubernetes» не существует. Выбор зависит от размера команды, зрелости инфраструктуры, требований к безопасности и рода деятельности компании.

Если вы разработчик или небольшая команда

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

Если вы средняя или крупная компания

Как только появляются регуляторные требования, несколько площадок, необходимость держать данные внутри периметра или управлять десятками кластеров — облачный managed Kubernetes перестает закрывать все потребности, и компании приходят к платформенным решениям. Kubernetes настройка на уровне enterprise — это уже не один кластер, а унифицированный процесс управления множеством кластеров.
Важный ориентир — совокупная стоимость владения (TCO). «Ванильный» Kubernetes на старте кажется бесплатным, но со временем расходы растут: зарплаты инженеров, время на сборку каждого нового кластера, стоимость обновлений и устранения инцидентов.
Регуляторные требования — наличие в реестре российского ПО, сертификация по ФСТЭК, работа в закрытых контурах — становятся весомым аргументом в пользу платформенного решения. Конечно, выстроить весь этот процесс самостоятельно технически возможно: отслеживать уязвимости, обеспечивать митигацию в течение 48 часов, регулярно обновлять сертифицированные компоненты. Но это требует значительных ресурсов.
Какой подход выбрать
Подход
Для кого
Плюсы
Минусы
Когда выбирать
Minikube / Kind
Разработчик, локальная среда
Быстро, бесплатно, просто
Только для разработки
Знакомство с K8s, локальные тесты
K3s / K0s
Edge, IoT, промышленность
Лёгкий, слабое железо
Не для больших нагрузок
Датчики, аппаратные на местах
kubeadm / KubeSpray
Команды, желающие контроля
Полный контроль, бесплатно
Высокая трудоёмкость, растущий TCO
Старт при наличии экспертизы
Managed K8s в облаке
Небольшие и средние команды
Нет забот об эксплуатации
Зависимость от облака
Быстрый старт без DevOps-команды
Коммерческая платформа («Штурвал»)
Крупные и средние компании
Готовое решение, поддержка с различным SLA, сертификат ФСТЭК
Требует внедрения
Закрытые контуры, регуляторика, масштаб
Выбор метода установки Kubernetes — всегда компромисс между стоимостью владения, зрелостью команды и требованиями безопасности. Компании начинают нуждаться в платформенном решении в тот момент, когда поддержка собственной «ванильной» сборки начинает обходиться дороже, чем готовый продукт. Хорошо, что на рынке сейчас достаточно готовых решений, и можно не изобретать велосипед.