DevGang
Авторизоваться

Битва: OpenShift против Kubernetes

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

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

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

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

Оглавление

  • Что такое Kubernetes? 
  • Что такое OpenShift? 
  • Что такое система оркестрации контейнеров? 
  • Архитектура Kubernetes 
  • Архитектура OpenShift 
  • Преимущества использования Kubernetes 
  • Преимущества использования OpenShift
  • Сравнение 
  • Заключение

Что такое Kubernetes?

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

Что такое OpenShift?

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

Что такое система оркестрации контейнеров?

Автоматизация операционных задач, необходимых для выполнения контейнеризированных рабочих нагрузок и служб, таких как подготовка контейнеров, развертывание, масштабирование, создание сетей и балансировка нагрузки, известна как контейнерная оркестровка. Действительно, система, которая помогает в автоматизации, - это контейнерная система оркестровки. Как упоминалось ранее, на рынке доступны различные альтернативы. К ним относятся Kubernetes, OpenShift, Amazon ECS, Docker Swarm и Nomad, и это лишь некоторые из них. В этом блоге мы рассмотрим K8S vs OpenShift, где Kubernetes - это чисто механизм оркестровки контейнеров, а OpenShift - это решение "платформа как услуга" (PAAS), используемое для упрощения оркестровки контейнеров. Прежде чем мы продолжим сравнение, давайте попробуем быстро разобраться в архитектуре OpenShift и Kubernetes.

Архитектура Kubernetes

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

Чтобы кластер Kubernetes был полноценным и функциональным, у вас должно быть несколько различных компонентов. Кластер Kubernetes состоит из следующих частей:

Плоскость управления или компоненты главного узла

  1. kube-apiserver: API Kubernetes доступен через компонент Kubernetes control plane, известный как kube-apiserver. Интерфейсом Kubernetes control plane является API-сервер. 
  2. etcd: Kubernetes использует etcd в качестве резервного хранилища для всех данных кластера, поскольку это надежное и высокодоступное хранилище значений ключей.
  3. kube-scheduler: Компонент kube-scheduler плоскости управления отвечает за выбор узла для вновь сформированных модулей без связанного узла.
  4. kube-controller-manager: За выполнение процессов контроллера отвечает компонент плоскости управления kube-controller-manager.
  5. cloud-controller-manager: Диспетчер облачных контроллеров отделяет компоненты, которые взаимодействуют с облачной платформой, от тех, которые взаимодействуют только с вашим кластером, и позволяет подключить ваш кластер к API вашего облачного провайдера.

Компоненты рабочей машины или узла

  1. kubelet: Задача kubelet — убедиться, что контейнеры работают в поде. 
  2. kube-proxy: Каждый узел в вашем кластере запускает kube-proxy, сетевой прокси-сервер, который выполняет часть концепции сервиса Kubernetes. На узлах kube-proxy отслеживает сетевые политики. Эти сетевые правила разрешают сетевое взаимодействие с вашими модулями из сеансов как внутри, так и за пределами вашего кластера.
  3. Container runtime: Container runtime - это программное обеспечение, ответственное за запуск контейнеров. Контейнеры и CRI-O - это две среды выполнения контейнеров, которые поддерживает Kubernetes помимо любой другой реализации Kubernetes CRI.

Архитектура OpenShift

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

Плоскость управления или компоненты главного узла

1. Служба OpenShift

  1. Сервер API OpenShift: для ресурсов OpenShift, таких как проекты, маршруты и шаблоны, сервер API OpenShift проверяет и настраивает данные.
  2. Диспетчер контроллера OpenShift: объекты контроллера проекта, маршрута и шаблона являются примерами объектов OpenShift, которые диспетчер контроллера OpenShift отслеживает на наличие изменений в etcd, прежде чем использовать API для обеспечения желаемого состояния.
  3. Сервер API OpenShift OAuth: все пользователи, группы и токены OAuth настраиваются и проверяются сервером API OpenShift OAuth перед их использованием для аутентификации OpenShift Container Platform.
  4. Сервер OpenShift OAuth: чтобы аутентифицировать себя в API, пользователи должны запрашивать токены у сервера OpenShift OAuth.

2. Сетевые компоненты

Единая кластерная сеть обеспечивается контейнерной платформой OpenShift с использованием стратегии программно-определяемой сети (SDN), позволяющей осуществлять связь между модулями по всему кластеру.

3. Сервис Kubernetes

  1. Сервер API Kubernetes: данные для модулей, служб и контроллеров репликации проверяются и настраиваются
  2. Сервер API Kubernetes. Кроме того, он служит координационным центром для общего состояния кластера.
  3. Диспетчер контроллеров Kubernetes: при изменении таких элементов, как объекты контроллера репликации, пространства имен и сервисных учетных записей, диспетчер контроллеров Kubernetes отслеживает эти изменения в etcd, а затем использует API для обеспечения желаемого состояния.
  4. Планировщик Kubernetes: идеальный узел для размещения модуля выбирается планировщиком Kubernetes, когда он замечает новые созданные модули без назначенного узла.

Компоненты рабочей машины или узла

  1. Наблюдение: ключевые компоненты платформы OpenShift Container Platform отслеживаются с помощью предварительно настроенного, предустановленного и самообновляющегося стека мониторинга. Администраторы кластера могут включить мониторинг пользовательских проектов после установки OpenShift Container Platform.
  2. Сеть. Администраторам кластера доступны различные варианты открытия приложений кластера для внешнего трафика и защиты сетевых подключений.
  3. OpenShift Lifecycle Manager: средства, предоставляемые Operator Lifecycle Manager тем, кто создает и развертывает приложения, позволяют распространять и хранить операторов.
  4. Интегрированный репозиторий образов: из вашего исходного кода платформа контейнеров OpenShift может создавать образы, развертывать их и управлять сроком их службы. Для локального управления образами он предлагает внутренний интегрированный реестр образов контейнеров, который можно установить в вашей среде OpenShift Container Platform.
  5. Управление машинами: для администрирования кластера OpenShift Container Platform вы можете использовать управление машинами для гибкого взаимодействия с базовыми инфраструктурами, такими как AWS, Azure, GCP, OpenStack, Red Hat Virtualization и vSphere.

Так же, как и Control Plane, рабочий узел также содержит CRI-O и Kubelet.

Преимущества использования Kubernetes

  • Kubernetes можно использовать бесплатно на любой платформе, так как он с открытым исходным кодом.
  • Он имеет значительное активное сообщество разработчиков и инженеров, которое помогает с регулярным выпуском новых функций.
  • Для установки Kubernetes на большинстве систем можно использовать несколько инструментов установки, таких как kubeadm, kops и kube-spray.

Преимущества использования OpenShift

  • Почти каждая задача Kubernetes может быть создана, развернута, масштабирована, отслежена и реализована с помощью многофункционального графического интерфейса OpenShift по умолчанию, который доступен администраторам и разработчикам. 
  • Различные поставщики облачных сервисов предлагают различные сервисы, управляемые Kubernetes, каждый со своим собственным набором дополнений, плагинов и рекомендаций по использованию. Следовательно, вам необходимо понимать, как все работает, когда вы переходите от одного облачного провайдера к другому с помощью Kubernetes. Тем не менее, когда дело доходит до OpenShift, один и тот же веб-интерфейс можно использовать для создания, развертывания и управления вашим приложением на всех платформах облачных сервисов. 
  • Чтобы предотвратить проблему компрометации учетной записи, OpenShift по умолчанию предоставляет управление доступом на основе ролей (RBAC), что помогает убедиться, что каждый разработчик получает разрешение только на доступ к тем функциям, которые ему требуются.
  • Red Hat OpenShift предлагает коммерческую поддержку, обновления, патчи и повышенную безопасность для Kubernetes и собственных приложений Kubernetes.
  • Red Hat OpenShift обеспечивает контроль, наглядность и управление для простого развертывания, обслуживания и создания конвейеров кода за счет интеграции мониторинга платформы и автоматизированных операций технического обслуживания и обновлений.

Сравнение OpenShift и Kubernetes

Продукт против проекта

Первое и наиболее важное различие между OpenShift и Kubernetes заключается в том, что OpenShift - это коммерческий продукт, для которого требуется членство. Напротив, Kubernetes - это проект с открытым исходным кодом, доступный бесплатно. Таким образом, в случае возникновения каких-либо проблем или багов OpenShift предлагает хорошую альтернативу платной поддержке для устранения неполадок. С другой стороны, в Kubernetes вам необходимо связаться с сообществом Kubernetes, которое состоит из нескольких профессионалов, включая разработчиков, администраторов и архитекторов, чтобы устранить проблемы или баги, обнаруженные в инструменте.

Вопрос для принятия решения: Готовы ли вы платить за подписку на OpenShift или вам нравится Kubernetes, который предоставляется бесплатно?

Установка

Установка - это первое, что вам действительно нужно сделать, чтобы запустить ваш кластер, и один из наиболее важных моментов, который следует учитывать при обсуждении темы OpenShift vs Kubernetes.

В случае OpenShift для его установки необходимо использовать одну из платформ, перечисленных ниже. Он не может быть установлен ни в одном другом дистрибутиве Linux.

  1. Red Hat Enterprise Linux CoreOS (RHCOS) (для главных узлов)
  2. Red Hat Enterprise Linux (RHEL) (для рабочих узлов)

Напротив, Kubernetes можно настроить на большинстве систем и установить с помощью различных инструментов, включая Kubeadm, Kube-spray, Kops и Booktube.

Вопрос для принятия решения: Хотите ли вы ввести ограничения на операционную систему или вам удобно использовать любую из доступных и поддерживаемых систем?

Командная строка

После того, как вы настроили свой кластер, вам нужен способ взаимодействия с ним. Следовательно, «Командная строка» — наш следующий пункт обсуждения в этой статье.

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

В OpenShift аналогичная функциональность предоставляется командой oc, поскольку она была разработана kubectl. Тем не менее, она также расширяется, чтобы изначально поддерживать больше функций OpenShift Container Platform, таких как:

  1. Полная поддержка ресурсов OpenShift Container Platform: Объекты DeploymentConfig, BuildConfig, Route, ImageStream и ImageStreamTag являются примерами ресурсов, которые являются эксклюзивными для платформы контейнеров OpenShift и которыми можно управлять с помощью команды oc.
  2. Идентификация: Встроенная команда входа в систему, предоставляемая двоичным кодом oc, обеспечивает аутентификацию и позволяет вам взаимодействовать с контейнерной платформой OpenShift.
  3. Дополнительные команды, такие как oc new-app, oc new-project: Команда oc new-app упрощает запуск новых приложений с использованием готовых образов или существующего исходного кода. Точно так же запуск проекта, который вы можете использовать по умолчанию, упрощается с помощью команды oc new-project.

Вопрос для принятия решения: Хотите ли вы использовать kubectl, который выдает команды вашему кластеру Kubernetes, или у вас есть ресурсы, требующие наличия команды oc?

Пользовательский интерфейс

Командная строка - не единственная опция, которая взаимодействует с вашим кластером, как и пользовательский интерфейс. Следовательно, эффективный веб-пользовательский интерфейс (UI) необходим для администрирования кластера и, следовательно, не может быть пропущен, когда речь идет о Kubernetes против OpenShift.

Панель мониторинга Kubernetes должна быть установлена независимо, и вы должны использовать kube-proxy для маршрутизации порта локального компьютера на сервер администратора кластера. Кроме того, поскольку на панели мониторинга отсутствует страница входа в систему, вы должны вручную установить токен на предъявителя для авторизации и аутентификации.

Веб-консоль для OpenShift содержит страницу входа в систему. Консоль легкодоступна, и большинство ресурсов можно создать или изменить с помощью формы. Все серверы, проекты и роли кластера можно увидеть.

Вопрос для принятия решения: Можете ли вы позволить себе потратить усилия на самостоятельную установку панели мониторинга или вам нужен необычный пользовательский интерфейс для доступа к вашему кластеру?

Проект против пространства имен

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

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

Вопрос для принятия решения: Соответствует ли пространство имен в Kubernetes вашим требованиям по изоляции ресурсов в вашем кластере, или вам явно нужны проекты в OpenShift?

Шаблон против управления пакетами

Шаблоны Helm доступны в Kubernetes и являются гибкими и простыми в использовании. Диаграммы - это пакеты, а Helm - это инструмент управления пакетами. Когда речь заходит о Kubernetes против OpenShift, этот момент определенно следует учитывать.

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

В шаблонах OpenShift отсутствуют расширенные шаблоны и управление версиями пакетов, которые можно найти в Helm charts. В результате развертывание OpenShift становится более сложным, и в большинстве случаев требуются внешние оболочки.

Вопрос о принятии решения для вас: Если вы уже знакомы с Helm, вы все еще хотите изучить шаблоны OpenShift?

Реестр изображений

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

Это одна из особенностей OpenShift, отличающих его от Kubernetes. Обратите внимание, что вы также можете интегрировать свой кластер OpenShift с несколькими основными реестрами изображений, такими как, Docker Hub, Amazon Elastic Container Registry (ECR), Google Container Registry (GCR) и Microsoft Azure Container Registry (ACR), но не ограничиваясь ими.

Вопрос для принятия решения: Требуется ли вам интегрированный реестр изображений в вашем кластере или у вас нет проблем с использованием вашего собственного реестра изображений?

Безопасность

OpenShift имеет более строгие правила безопасности, чем Kubernetes. Действительно, в OpenShift вам не разрешается запускать базовые образы контейнеров или многие официальные образы из-за требований безопасности.

Например, поскольку OpenShift ограничивает запуск контейнера от имени root, а многие официальные образы не соответствуют требованиям, большинство образов контейнеров, доступных на Docker Hub, не работают на платформе.

Управление доступом на основе ролей (RBAC), функция, предлагаемая OpenShift по умолчанию, помогает гарантировать, что каждый разработчик имеет доступ только к тем возможностям, которые ему необходимы для предотвращения проблем со взломом учетной записи. Из-за отсутствия встроенных функций аутентификации и авторизации функции безопасности Kubernetes требуют более сложной настройки.

Другие правила безопасности, такие как YAM и OAuth, устанавливаются по умолчанию при создании проекта с помощью OpenShift. Разрешения пользователя нужно добавлять только в случае необходимости. Это ускоряет процесс настройки вашей прикладной среды и, следовательно, экономит ваше время.

Что касается безопасности, то сравнение между этими двумя вариантами просто несправедливо, поскольку безопасность OpenShift, на самом деле, довольно строгая.

Вопрос для принятия решения: Хотите ли вы, чтобы в вашем кластере по умолчанию была обеспечена безопасность, или вы можете управлять ею самостоятельно?

CI/CD

Организации могут использовать OpenShift Container Platform для автоматизации доставки своих приложений с использованием методов DevOps, таких как непрерывная интеграция (CI) и непрерывная доставка (CD). Контейнерная платформа OpenShift предлагает следующие варианты CI/CD для удовлетворения организационных потребностей:

  1. OpenShift Builds: Используя декларативный процесс сборки, OpenShift Builds позволяет создавать собственные облачные приложения.
  2. OpenShift Pipelines: OpenShift Pipelines предлагает встроенную в Kubernetes платформу CI/CD для проектирования и запуска каждого этапа конвейера в отдельном контейнере.
  3. OpenShift GitOps: С помощью OpenShift GitOps администраторы могут надежно развертывать и настраивать инфраструктуру и приложения на базе Kubernetes на всех кластерах и в течение жизненного цикла разработки.
  4. Jenkins: Jenkins автоматизирует разработку, тестирование и развертывание проектов и приложений. Образ Jenkins, напрямую интегрированный с контейнерной платформой OpenShift, предлагается через инструменты разработчика OpenShift.

Поддержка

Поскольку Kubernetes - это проект с открытым исходным кодом, значительное и заинтересованное сообщество разработчиков постоянно работает вместе над улучшением платформы. Когда дело доходит до OpenShift, группа поддержки значительно меньше и состоит в основном из разработчиков Red Hat.

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

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

Вопрос для принятия решения: Хотите ли вы, чтобы платная специальная служба поддержки помогала вам с вашими проблемами, или вы можете положиться на сообщество и искать решения бесплатно?

Cloud Agnostic

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

Существуют различные облачные провайдеры, включая AWS, GCP и Azure, которые предлагают различные сервисы, управляемые Kubernetes, каждый со своим собственным набором дополнений, плагинов и рекомендаций по использованию. Прежде чем переключаться между облачными сервисами, вам необходимо ознакомиться с управляемыми сервисами Kubernetes, чтобы понять, как все работает. Вот почему Kubernetes не так зависим от облаков, как OpenShift. Действительно, пользовательский интерфейс и функции размещенного или управляемого OpenShift остаются прежними.

Вопрос для принятия решения: Планируете ли вы переходить от одного облачного провайдера к другому или предпочитаете всегда использовать одного и того же?

Стоимость

Поскольку Kubernetes - это проект с открытым исходным кодом, он бесплатный и не требует никакого лицензирования. Таким образом, вы не обязаны никому платить, если управляете Kubernetes самостоятельно. Однако с вас будет взиматься плата, если вы используете управляемый сервис, предлагаемый любым провайдером, таким как AWS, GCP или Azure. Стоимость будет определяться выбранной вами платформой и количеством используемых вами ресурсов.

OpenShift предоставляет два типа сервисов — Red Hat OpenShift cloud services editions и самоуправляемые Red Hat OpenShift editions. Если вы пользуетесь облачными сервисами, зарезервированные экземпляры Red Hat OpenShift можно приобрести всего за 0,076 доллара США в час с 20 ноября 2022 года, а стоимость автономного Red Hat OpenShift зависит от вашей подписки и выбранного размера.

Вопрос для принятия решения: что бы вы предпочли - использовать самоуправляемый кластер Kubernetes и сэкономить деньги или потратить на управляемый сервис?

Заключение

Как OpenShift, так и Kubernetes позволяют быстро развертывать контейнерные приложения и управлять ими. Тем не менее, они действительно отличаются определенным образом, вот почему мы в ClickIT подготовили для вас этот блог об OpenShift vs Kubernetes. Kubernetes доступен бесплатно, в то время как OpenShift предлагает другие планы в соответствии с вашими потребностями. Итак, OpenShift просит вас заплатить; однако он предоставляет поддержку клиентов, которой нет у Kubernetes. Это не значит, что вы не получите помощи, если столкнетесь с проблемами при использовании Kubernetes. Действительно, в Kubernetes есть огромное сообщество, готовое поддержать вас. Еще одна вещь, которую следует отметить, - это то, что с диаграммами Kubernetes Helm удобно работать, в то время как OpenShift имеет необычную панель мониторинга пользовательского интерфейса. Список отличий очень длинный.

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

Учитывая все вопросы о принятии решений, которые мы задавали по каждому пункту сравнения, какой из них вы выбираете? OpenShift или Kubernetes?

Источник:

Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу