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

Это добавляет сложности тем, кто хочет получить готовую платформу для управления контейнерами и не готов уделять много времени обслуживанию. Поэтому появились решения, которые облегчают использование Kubernetes и позволяют начать им пользоваться сразу после установки. Они объединяют Kubernetes и спектр нужных компонентов в готовый продукт.

Мы рассмотрим несколько решений: обычный Kubernetes, платформу OpenShift в разных вариантах и Kubernetes as a Service (KaaS) на примере сервиса Mail.ru Cloud Solutions. Это сравнение поможет выбрать инструмент в зависимости от ваших задач:

  • хотите ли вы все делать самостоятельно с возможностью полной кастомизации либо вам нужно готовое решение с некоторыми ограничениями;
  • готовы ли вы платить за дорогостоящую лицензию или вам больше подходит модель оплаты за используемые ресурсы, либо ваш выбор — бесплатный вариант с более сложным внедрением и администрированием решения.
Статью помогли подготовить ведущий DevOps-инженер Mail.ru Cloud Solutions Павел Селиванов и независимый консультант Роман Цисык.

OpenShift и KaaS: в чем разница

OpenShift и KaaS — это два разных инструмента, у которых совершенно разные подходы:

  1. OpenShift — готовая платформа для разработки и эксплуатации контейнерных приложений. Ее можно установить на свои серверы или арендовать у облачного провайдера. OpenShift — это больше чем Kubernetes. Kubernetes лежит в основе платформы, но кроме него еще есть много других инструментов, которые упрощают работу с кластером и контейнерными приложениями в целом. Некоторые инструменты, которые в простом Kubernetes нужно изучать и настраивать, тут доступны «из коробки». Например, в OpenShift более строгая политика безопасности, которая не позволяет запускать контейнеры от root-пользователя, есть инструменты для упрощения интеграции с Active Directory, встроенный конвейер CI/CD и другое.
  2. KaaS (Kubernetes as a Service) — это Managed-решение от облачного провайдера, которое не нужно устанавливать, оно доступно в виде готового облачного сервиса. Основные плюсы, которые получают пользователи — простую установку и первоначальную настройку кластера, автомасштабирование и отсутствие необходимости администрировать кластер, много готовых интегрированных инструментов, упрощающих работу с Kubernetes.

Также отметим, что OpenShift — это готовый дистрибутив, он везде предоставляет одинаковую функциональность. А функциональность KaaS зависит от конкретного облачного провайдера. В одном случае будет удобный графический интерфейс управления кластером, в другом — расширенные функции мониторинга, а в третьем — интеграция c IdM. Поэтому, чтобы не сравнивать некий абстрактный KaaS, мы будем говорить конкретно про KaaS на платформе Mail.ru Cloud Solutions.

Давайте сравним эти два инструмента и посмотрим, какие преимущества они дают по сравнению с простой установкой K8s. OpenShift мы будем рассматривать с двух сторон: как Open Source-решение, которое можно установить и использовать самостоятельно, и облачное платное решение от вендора.

Автомасштабирование в Kubernetes, OpenShift и KaaS

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

OpenShift поддерживает автомасштабирование на уровне кластера: он может изменять количество подов и нод в кластере. Но если рассматривать установку On Premise, то на физическом сервере количество ресурсов ограничено, OpenShift в любом случае может упереться в потолок. В моменте из-за этого ухудшится производительность, а если такое будет случаться постоянно — то придется докупать оборудование. Если рассматривать OS как услугу облачного провайдера, то там используют виртуальные серверы, и у них больше возможностей для расширения.

KaaS находится у облачного провайдера, вы можете подключить автоматическое масштабирование кластера. Тогда система сможет автоматически подключать до ста новых серверов. При этом автомасштабирование настраивается в несколько кликов: достаточно лишь указать минимальное и максимальное количество нод.

Kubernetes как сервис с сертификацией CNCF
Автомасштабирование кластера под нагрузкой
Перейти

Балансировка нагрузки в Kubernetes, OpenShift и KaaS

Kubernetes не умеет балансировать нагрузку «из коробки»: придется самостоятельно поднимать и настраивать балансировщик.

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

В KaaS балансировщики уже интегрированы и подключаются автоматически. Обычно создается два балансера в отказоустойчивом режиме Active/Standby. Это означает, что первый балансер активно работает, а второй находится в режиме ожидания. Если первый по какой-то причине перестает работать, то автоматически включается второй.

Мониторинг в Kubernetes, OpenShift и KaaS

В Kubernetes по умолчанию нет мониторинга, его нужно устанавливать и настраивать отдельно.

В OpenShift используются Prometheus и Grafana. Такой набор стал уже своего рода стандартом мониторинга Kubernetes. Они уже установлены, настроены и сразу готовы к использованию.

В KaaS могут использоваться разные инструменты, в зависимости от провайдера. На платформе MCS есть Prometheus и Grafana, которые тоже готовы к использованию.

Установка, администрирование и интеграция Kubernetes, OpenShift и KaaS с другими сервисами

Kubernetes нужно скачивать, устанавливать и настраивать самостоятельно. Причем существуют десятки инсталляторов и способов его установки. Минус в том, что нужно разобраться в их отличиях и выбрать нужный. А плюс — в том, что есть гибкость, ведь каждый инсталлятор делает что-то по-своему. Но кроме настройки самого Kubernetes его еще нужно интегрировать с другими системами: хранилища данных, авторизация, сбор логов и тому подобное. Администрированием тоже придется заниматься самостоятельно: поддерживать работоспособность и разбираться в проблемах.

OpenShift в облаке вендора уже установлен, настроен и готов к использованию. Но установку On Premise придется выполнять своими усилиями. Нужно учесть, что OpenShift работает только на дистрибутивах RHEL, CoreOS и CentOS. Интеграция с другими сервисами также зависит от способа установки. Если вы используете локальный OpenShift, то интегрироваться со всеми вашими системами придется самостоятельно. А если облачный — то у провайдера как правило есть разные сервисы, с которыми можно легко интегрироваться.

KaaS. Аналогично облачному OpenShift, в KaaS развернуть кластер можно за несколько кликов мышью. Администрированием занимается облачный провайдер, так что вам не нужно задумываться об отказоустойчивости и других проблемах. Блочные хранилища Persistent Volumes уже подключены к кластеру и позволяют хранить данные, также можно использовать S3-хранилище или облачные СУБД, если это позволяет логика приложения. Также KaaS работает с любыми сервисами, которые есть на платформе Mail.ru Cloud Solutions, например, сервисы для аналитики больших данных, машинного обучения и другие.

Обновление в Kubernetes, OpenShift и KaaS

Kubernetes нужно обновлять самостоятельно и не забывать про дополнительные инструменты. Каждое обновление нужно тестировать на совместимость: что вся система целиком правильно работает. Также важно выбрать инструмент обновления, который умеет обновлять кластер без простоя IT-системы, и организовать сам процесс. Однако в любом случае могут возникнуть непредвиденные проблемы, которые приведут к недоступности кластера. Со всеми ошибками в процессе обновления придется разбираться самостоятельно.

В OpenShift все содержимое обновляется и тестируется его разработчиками. Каждая новая версия OpenShift появляется только после полноценного тестирования всей платформы. Пользователям On Premise не нужно обновлять отдельные компоненты, но нужно обновлять саму платформу. Если после обновления ваши собственные сервисы перестанут работать с конкретной версией OS — разбираться тоже придется самостоятельно. А пользователи OpenShift от вендора могут не задумываться о проблемах обновления. Провайдер сделает все сам, и кластер не придется останавливать.

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

Управление кластером в Kubernetes, OpenShift и KaaS

Kubernetes можно управлять разными способами: графический интерфейс (UI), API, CLI.

В OpenShift API и CLI совместимы со стандартным Kubernetes, и даже немного расширены: позволяют управлять теми функциями платформы, которых нет в классическом Kubernetes. Отдельно нужно отметить графический интерфейс: он намного удобней и функциональней классического Kubernetes Dashboard и позволяет сделать практически все, не прибегая к консоли. Иногда даже встречаются инсталляции обычного Kubernetes, на которых установлен интерфейс от OpenShift.

KaaS тоже поддерживает стандартные API и CLI Kubernetes. Веб-интерфейс нацелен на то, чтобы управлять только внешним периметром Kubernetes: создание, запуск и остановка кластера, добавление или удаление нод и так далее. Для того, чтобы управлять «внутренностями» кластера, вроде деплойментов, сервисов и так далее, можно использовать стандартные возможности Kubernetes, например предустановленный Kubernetes Dashboard или CLI kubectl.

Конвейер CI/CD в Kubernetes, OpenShift и KaaS

В Kubernetes нет готового CI/CD-решения. Чтобы настроить конвейер разработки, нужно самостоятельно интегрировать Kubernetes с другими инструментами и устанавливать плагины.

В OpenShift есть встроенный конвейер CI/CD. У него есть интересная функция: если указать ссылку на Git-репозиторий и выбрать шаблон нужного языка программирования, OpenShift сам скачает код, обернет его в контейнер, сгенерирует манифест и развернет приложение в Kubernetes. Если же возможностей встроенного CI/CD-конвейера не хватает, тогда можно подключить любой инструмент, который совместим с обычным Kubernetes.

В KaaS нет готового CI/CD решения, но к нему можно быстро подключить любые инструменты, совместимые с классическим Kubernetes. Также на платформе MCS есть маркетплейс, который упрощает установку ряда облачных инструментов, нужных для работы с K8s.

Что выбрать: K8s, OpenShift или KaaS

У «чистого» Kubernetes преимущество в гибкости настройки. Он позволяет реализовать нестандартные сценарии инфраструктуры, но требует времени и умения с ним работать. Далеко не всем компаниям нужна эта гибкость: это как швейцарский нож, из арсенала которого используется только лезвие. Такое решение нужно выбирать, когда есть специфические требования к инфраструктуре и возможность администрировать кластер.

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

Есть еще один момент: OpenShift расширяет возможности стандартного Kubernetes, но использование его встроенных объектов затрудняет миграцию на обычный Kubernetes или другую платформу, придется перестраивать систему деплоя приложений. То есть это решение стоит выбирать, если преимущества и ограничения OS вас устраивают, нет намерения менять платформу.

KaaS — это Managed-решение Kubernetes, где администрированием кластера занимается облачный провайдер. Оно упрощает создание и сопровождение кластера, предлагает «из коробки» многое из того, что нужно для работы с Kubernetes, а также позволяет быстро интегрировать любые совместимые с K8s инструменты.

Это решение стоит выбрать, когда нужно упростить установку кластера и не заботиться о его сопровождении. KaaS от Mail.ru Cloud Solutions сертифицирован CNCF и полностью совместим со всеми стандартными инструментами Kubernetes, поэтому позволяет использовать все возможности экосистемы технологии. Также это упрощает миграцию на классический Kubernetes в другое облако или On Premise, либо на KaaS другого провайдера. То есть вы сможете без проблем перенести свои IT-системы, если захотите сменить платформу.