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

Краткий обзор

Ориентация на контейнеры дает организациям превосходную возможность повысить эффективность, оптимизировать потребление ресурсов, усилить безопасность, автоматизировать операции и ускорить инновации. Неудивительно, что, по прогнозам Gartner, к 2022 году более 75% организаций в мире будет использовать контейнеризированные приложения в производственной среде.

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

В этом документе мы кратко опишем разные варианты Kubernetes, существующие на момент написания, и сравним по 20 критериям три самых популярных дистрибутива корпоративного класса — Canonical Kubernetes, Red Hat OpenShift и SUSE Rancher. В конце приводится сводная таблица. (Canonical Kubernetes показал себя как самый гибкий, функциональный и выгодный дистрибутив.)

Ключевые критерии выбора дистрибутива Kubernetes

1. Соответствие CNCF

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

Canonical Kubernetes, Red Hat Openshift и SUSE Rancher имеют сертификат CNCF.

2.    Управление жизненным циклом

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

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

Rancher поддерживает апстрим-операторы, но не обеспечивает автоматизацию на том же уровне, что Canonical Kubernetes и OpenShift.

3. Высокая доступность

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

Canonical Kubernetes, Rancher и OpenShift предоставляют высокодоступные кластеры.

4.    Апгрейд кластеров

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

5.    Поддержка жизненного цикла

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

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

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

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

6.    Поддержка на границе сети

При использовании Kubernetes на границе сети масштаб, размер и доступность ресурсов быстро могут стать ограничивающими факторами. Чтобы решить эти проблемы, Canonical предлагает MicroK8s — упрощенный дистрибутив Kubernetes, использующий подход Zero Ops и созданный специально для Интернета вещей (IoT) и границы сети. Rancher предоставляет K3s — облегченный вариант для сценариев с ограниченными ресурсами и установкой в удаленных местах.

K3s и MicroK8s существенно упрощают развертывание, оптимизацию и обслуживание Kubernetes на границе сети. Одно из главных различий между MicroK8s и K3s — подход к Kubernetes API. MicroK8s предоставляет полную совместимость с апстрим-версией K8s, а K3s предлагает ограниченный набор API, чтобы сократить объем кода.

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

7.    Версия для одной ноды

Для пользователей, которые хотят запустить Kubernetes на одном устройстве, существуют упрощенные дистрибутивы. Они предоставляют кластеры с одной нодой и отчасти упрощают использование Kubernetes. Canonical Kubernetes и Rancher поддерживают кластеры с одной нодой через MicroK8s и K3s.

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

8. Управляемое решение Kubernetes

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

Canonical Kubernetes предлагает полностью управляемые кластеры на платформе bare metal, в OpenStack или в любом публичном облаке. Canonical создает кластер и обслуживает его, предоставляя круглосуточную поддержку для реализации и масштабирования развертывания. Более того, пользователи могут в любой момент взять управление на себя и даже повторно развернуть или реплицировать развертывание, используя те же инструменты. Управляемые сервисы Red Hat OpenShift дают те же преимущества, но поддерживают ограниченный список оборудования для частного облака и bare metal. Rancher пока не предлагает полностью управляемые сервисы для Kubernetes.

9. Реестры и среда выполнения контейнеров

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

Основные варианты сред выполнения — это Containerd, Kata Containers и CRI-O. 

Containerd — это высокоуровневая среда выполнения контейнеров, которая управляет всем жизненным циклом, обеспечивая простоту, надежность и переносимость. Containerd считается отраслевым стандартом и используется по умолчанию. Canonical Kubernetes и Rancher поддерживают Containerd.

Решение Kata Containers делает акцент на безопасности. Оно обеспечивает более глубокую изоляцию между контейнерами, размещая их на облегченных виртуальных машинах. Canonical Kubernetes и Red Hat Openshift поддерживают Kata Containers.

CRI-O — это среда выполнения контейнеров, разработанная Red Hat специально для Kubernetes. Она может работать параллельно с любой другой средой по стандарту Open Container initiative (OCI), предоставляя больше гибкости.

Реестр контейнеров — это еще один важный элемент успешной стратегии Kubernetes. В реестре хранятся образы контейнеров, необходимые для разработки и масштабирования приложений. Canonical Kubernetes, Red Hat Openshift и Rancher поддерживают разные варианты реестров, в том числе частные реестры, реестры в публичных облаках и DockerHub.

10.       Сети

В Kubernetes сети реализуются через интерфейс Container Network Interface (CNI), который позволяет приложениям и компонентам взаимодействовать друг с другом. Для сетей доступно много решений, но дистрибутивы Kubernetes поддерживают не все из них, поэтому при выборе дистрибутива нужно обращать на это внимание.

11.       Хранение

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

  • Canonical Kubernetes поддерживает Ceph, NFS, Cloud Storage, NetApp, vSphere, FlexVolume и PureStorage.

  • Red Hat Openshift поддерживает Ceph/Rook, Red Hat OpenShift Data Foundation, GlusterFS, NFS, Cinder и Flexvolume.

  • SUSE Rancher поддерживает GlusterFS, NFS, vSphere и Longhorn.

12.       Управление операциями и мониторинг

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

Все три дистрибутива Kubernetes предлагают готовые функции управления операциями и мониторинга. OpenShift включает предварительно настроенный стек мониторинга Prometheus с дашбордами Grafana. Пользователи Rancher могут активировать Prometheus и Grafana одним щелчком в пользовательском интерфейсе. Наконец, Canonical Kubernetes поставляется со стандартизированным набором опенсорс-инструментов для объединения логов и дашбордов для мониторинга системы, например Prometheus, Grafana, Elasticsearch и Nagios.

13. Мультиоблачные развертывания

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

Canonical Kubernetes использует Juju, чтобы упростить подготовку, установку и конфигурацию в облачной среде. Операторы Juju Charmed Operators (чармы) упрощают развертывание и администрирование Kubernetes в разных облачных провайдерах и инстансах с помощью операций на основе моделей. При использовании моделей Juju низкоуровневые компоненты хранилища, вычислений, сетей и программного обеспечения можно считать единой сущностью, к которой применяется общая конфигурация. Чармы поставляют правила автоматизации и компоненты, преобразуя операции с нулевого по второй день в воспроизводимый и надежный код.

Вместо операций на основе моделей, которые отделяют модель от платформы, другие вендоры полагаются на шаблоны для мультиоблачных развертываний, предоставляя различные конфигурации, оптимизированные под различные облака. С OpenShift можно использовать Ansible для оптимизации мультиоблачных развертываний Kubernetes. В мультиоблачной среде с Rancher используются Helm-чарты и версия Kubernetes для определенного облака, например Amazon EKS и Google GKE. Шаблоны дают меньше гибкости и повторяемости при управлении приложениями, поэтому расходы на обслуживание могут расти.

14.   Нативная интеграция с AWS/GCP/Azure

Простота развертывания мультиоблачной среды не даст никаких преимуществ, если дистрибутив Kubernetes не может выполняться в целевых инфраструктурах. Canonical Kubernetes, OpenShift и Rancher предлагают нативную интеграцию с тремя самыми популярными публичными облаками: Amazon Web Services (AWS), Google Cloud Platform (GCP) и Microsoft Azure.

15.   Нативная интеграция с Openstack/VMware

Если говорить о частных облаках, все три дистрибутива Kubernetes предлагают нативную интеграцию с OpenStack и VMware.

16.   Развертывание и автоматизация платформ bare metal

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

В версии OpenShift 4.6 установка выполняется автоматически на основе Installer Provisioned Infrastructure (IPI) для bare metal с помощью Metal3. IPI предоставляет комплексную автоматизацию, чтобы обеспечить единый пользовательский опыт в разных развертываниях, но необходимо выполнить предварительные требования, а кастомизация конфигурации OpenShift довольно ограничена.

С Canonical Kubernetes организации могут использовать MAAS (металл как услуга), чтобы полностью автоматизировать обнаружение, пуск, развертывание и конфигурацию на платформе bare metal без выполняемых вручную операций, в стиле облака. После подготовки машины благодаря интеграции с Juju пользователи могут развернуть Canonical Kubernetes так же, как в публичном или частном облаке. По сравнению с OpenShift IPI, MAAS дает больше контроля над вариантами конфигурации и не требует соблюдения такого количества условий.

17.   Поддержка GPGPU для ускорения рабочих нагрузок

Производительность многих рабочих нагрузок можно повысить, если перевести ресурсоемкую часть приложения с ЦП на графический процессор общего назначения (GPGPU). GPU-ускорение можно применить и к приложениям Kubernetes, если дистрибутив это поддерживает.

Canonical Kubernetes, OpenShift и Rancher поддерживают GPU-ускорение, при этом на границе сети MicroK8s также поддерживает его, а вот K3s — нет.

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

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

Интеграция с K8s RBAC, Active Directory и LDAP, усиление защиты по стандарту CIS по умолчанию, шифрование данных при хранении и автоматические обновления безопасности без простоев гарантируют, что пользователи получают защищенное развертывание Kubernetes. Кроме того, организации могут использовать сервис Ubuntu Livepatch, чтобы устанавливать патчи для уязвимостей ядра Linux без остановки системы. Наконец, Canonical Kubernetes позволяет изолировать контейнеры от хост-системы с помощью AppArmor.

Red Hat OpenShift предоставляет различные инструменты для изоляции и защиты контейнеров, например SELinux, который работает почти так же, как AppArmor. Red Hat Quay и OpenShift S2I помогают организациям автоматизировать создание контейнеров, обеспечивая согласованность и безопасность в развертываниях. Red Hat Quay также можно использовать вместе с Clair, чтобы сканировать интегрированный реестр контейнеров и уведомлять разработчиков об обнаруженных уязвимостях. OpenShift предлагает надежное шифрование, усиление защиты Kubernetes, управление идентификаторами и RBAC по умолчанию. Пользователи могут укрепить безопасность с помощью широкого ряда сертифицированных сторонних инструментов. 

Rancher также поддерживает RBAC, следует рекомендациям CIS Kubernetes Benchmark и предоставляет подробную документацию, чтобы помочь пользователям защищать развертывания и самостоятельно оценивать уровень безопасности. Кроме того, Rancher регулярно проводит сторонние аудиты безопасности и тестирование на проникновение, чтобы выявлять потенциальные уязвимости.

19.   Поддерживаемые архитектуры

Canonical Kubernetes поддерживает больше всего архитектур. На втором месте — OpenShift, а затем Rancher:

  • Canonical Kubernetes поддерживает x86, ARM, IBM POWER и IBM Z;

  • Red Hat OpenShift — X86, IBM POWER и IBM Z;

  • А Rancher — только x86 и ARM.

20. Цены

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

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

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

Сравнительная таблица

Чтобы показать наличие или отсутствие возможности, используются значки "✓" и "–".

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

Итоги

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

Чтобы узнать больше о Canonical Kubernetes, посетите страницу ubuntu.com/kubernetes или пообщайтесь с нашими специалистами.

Дополнительные ресурсы

Присоединяйтесь к Telegram каналу UBUNTU Community, чтобы быть в курсе последних новостей!

Комментарии (6)


  1. GRIDark
    23.11.2021 15:21

    А в чем концептуальность данного перевода? Я просто не сильно понял причины, по которой именно в таком варианте "сухого перевода" необходимо выкладывать сие на хабр. Ко всему прочему, ссылка на источник ломаная (Вот здесь корректная ссылка для получения материала).


  1. Gutt
    23.11.2021 15:29

    А вот последний Enterprise Kubernetes Management Platforms Buyer Guide от Suse, где они сравнивают Rancher, Tanzu, Anthos & OpenShift. Если выйдет новая версия, то можно будет взять здесь.


    1. dima_go
      23.11.2021 17:21

      Спасибо, также довольно интересное сравнение - ознакомимся с ним


  1. IvanVakhrushev
    23.11.2021 16:11
    +1

    Не понял про одну ноду для OpenShift. CRC чем не устраивает? https://developers.redhat.com/products/codeready-containers/overview


  1. DrrRos
    23.11.2021 17:35

    Начиная с 4.9 у OpenShift тоже есть Single Node


    1. fgts_ru Автор
      23.11.2021 18:16

      Да, новость по этому поводу относительно новая, насколько было анонсировано Red Hat, такая возможность появилась относительно недавно (13.10.2021). В это время мы занимались проработкой статьи, поэтому скорректируем описание с поправкой на эту новость.