Особенности платформы Rancher для управления кластерами Kubernetes

Kate

Administrator
Команда форума
За последние годы Kubernetes стал де-факто стандартом оркестровки контейнерных приложений. Но его самостоятельная установка и настройка — нетривиальная задача, которая может занять несколько дней. Именно поэтому многие компании предпочитают готовые решения.

Команда Kubernetes aaS VK Cloud Solutions написала статью, посвященную платформе управления Kubernetes Rancher. Мы собрали для вас в одном месте всю основную справочную информацию об этой платформе: ее основных функциональных особенностях, кластерных операциях, внутреннем устройстве, безопасности и интеграции с внешними системами. И расскажем, когда вам подойдет именно Rancher, а когда стоит обратить внимание на другие инструменты.

Общая информация о Rancher​


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

Вот пример использования Rancher. Несколько команд создают кластеры на разных платформах, используя Rancher как единую точку входа и управления:

f50te27ytlxpmfwbknikngmz7ba.png


Сердце Rancher — сервер со всеми необходимыми компонентами для создания и управления кластерами. Вот верхнеуровневая архитектура платформы, управляющей одновременно и облачными Kubernetes-кластерами, и локальными инсталляциями:

lyj-mllahaf_gqwk0qkesskckc0.png


Установка и администрирование​


Rancher предлагает сертифицированные дистрибутивы Kubernetes для ЦОДов и облаков. Можно выбрать один из нескольких вариантов установки:

  1. Сначала устанавливается Helm, затем с его помощью на узлах выделенного Kubernetes-кластера устанавливается Rancher в виде чарта Helm.
  2. Экспериментальный инсталлятор RancherD поднимает Kubernetes-кластер, а затем устанавливает в нем Rancher в виде чарта Helm.
  3. Быстрое развертывание в Kubernetes-кластере EKS.

Хосты потребуется сконфигурировать, но не больше, чем того требует Docker. Также Rancher предлагает две контейнерные операционные системы, разработанные для наиболее эффективного запуска Kubernetes, — RancherOS (упрощенный дистрибутив Linux) и k3OS. Для конфигурирования кластеров используется синтаксис YAML.

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

Графический интерфейс​


У Rancher есть две графические оболочки: старая (Cluster Manager) и новая (Cluster Explorer). Ее мы и будем рассматривать.

ehfuad6hyxqkakqstunda-pwbpk.png


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

Соответствие критериям CNCF​


В Rancher используются две технологии, которые в некоммерческой организации CNCF (Cloud Native Computing Foundation) имеют статус Sandbox Project:

  • дистрибутив K3s — облегченная версия Kubernetes для сред с небольшими ресурсами;
  • Longhorn — блочное распределенное хранилище для Kubernetes.

Статус «Sandbox-проект» означает, что эти инструменты пока что не соответствуют в полной мере критериям CNCF, однако разработчики планируют со временем добиться этого соответствия.

Версия Kubernetes​


В Rancher поддержка новой версии Kubernetes появляется с задержкой в 5-9 месяцев. Обновиться можно в четыре клика, не прерывая работы кластера. Можно откатиться на предыдущие версии Kubernetes. Кластер из трех узлов переводится на новую версию примерно за 10 минут.

Стоимость и поддержка с соблюдением SLA​


Rancher распространяется только в виде полностью бесплатной Open-Source-версии с бесплатной поддержкой от вендора. Есть корпоративная поддержка от Rancher Labs, охватывающая Rancher, Hosted Rancher, RKE, K3s, Longhorn, Docker и Kubernetes.
Rancher не привязывается к конкретному поставщику и позволяет разворачивать кластеры в локальных, облачных или гибридных средах.

2. Кластерные операции​


Простота развертывания и конфигурирования​


Rancher использует для создания кластеров Kubernetes разные средства:

  • при работе с KaaS-сервисами Rancher интегрируется с их API, а развертывание выполняют сами сервисы;
  • для развертывания на локальных серверах, в облачных сервисах и виртуализированных платформах используется движок RKE — Rancher Kubernetes Engine.

Длительность создания кластера зависит от его размера и выбранной среды, при использовании RKE это занимает примерно 3–10 минут. С RKE можно расширять кластеры, добавляя рабочие узлы или узлы плоскости управления. Для этого нужно внести в файл cluster.yml новые узлы с прописанными ролями, а затем применить к нему команду rke up.

Среда выполнения​


С Rancher можно развернуть Kubernetes несколькими способами:

  1. В облачных сервисах крупнейших провайдеров, в том числе в виртуализированных средах на основе OpenStack и vSphere.
  2. В любых средах, для которых есть драйвер для Docker Machine.
  3. Можно развернуть или перенести уже имеющиеся кластеры в частное облако или локальную среду, в том числе Bare Metal.
  4. Также Rancher позволяет установить Kubernetes в IaaS-среды, созданные с помощью Ansible, Terraform, Puppet, Chef и других подобных инструментов.
  5. Для работы в удаленных средах с небольшим количеством ресурсов можно использовать облегченную версию Kubernetes — K3s.

Поддерживаемые архитектуры и ОС​


Rancher совместим со всеми современными Linux-дистрибутивами, работает на архитектурах x86-64 и ARM64. В одном Kubernetes-кластере могут одновременно существовать рабочие ноды на Windows и Linux.

Мультикластеры и импорт кластеров​


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

Поддержка одноузловых конфигураций​


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

Мультиарендность (multi-tenancy)​


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

3. Особенности внутреннего устройства​


Организация сетей​


Из коробки Rancher поддерживает CNI-решения Canal, Flannel, Calico и Weave. По умолчанию применяется Canal (неинкапсулированная сеть) в сочетании с инкапсуляцией средствами Flannel и VXLAN. В качестве Ingress-контроллера используется Nginx. Можно настраивать безопасные Airgap-сети, изолированные от небезопасных сетей.

Хранилища данных​


Для хранения данных Rancher использует Longhorn — распределенное блочное Open-Source-хранилище для Kubernetes, изначально разработанное в Rancher Labs и сегодня поддерживаемое CNCF в качестве Sandbox-проекта. Устанавливается в кластеры с помощью Helm, kubectl или интерфейса Rancher. Хранилище создает для каждого тома отдельный контроллер и синхронно реплицирует тома по репликам на разных нодах. Для оркестрации контроллерами и репликами используется Kubernetes.

Также Rancher позволяет развернуть из каталога приложений Pure Service Orchestrator (решение, предоставляющее контейнерные хранилища aaS), есть интеграция с гиперконвергентным хранилищем NetApp HCI и платформами Dell EMC PowerFlex CSI и CSM.

Балансировка нагрузки​


При создании кластеров на вычислительных узлах Rancher автоматически добавляет Ingress-контроллер Nginx для балансировки нагрузки. В управляемых сервисах, которые по умолчанию не устанавливают контроллер (вроде Amazon EKS), его можно установить самостоятельно из каталога приложений Rancher. Также будет доступен совместимый с этим провайдером сервис балансировки нагрузки. То же самое касается и ряда облачных провайдеров. С кластерами, которые развертываются с помощью Rancher, совместимы все стандартные Ingress-контроллеры и балансировщики нагрузки, включая шлюзы API и Service Mesh.

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


При развертывании в управляемых сервисах Rancher использует конфигурацию кластеров высокой доступности, которую может предоставить провайдер. При установке в других средах придется самостоятельно указать конфигурацию управляющего слоя, etcd и рабочих узлов. При развертывании с помощью RKE можно со временем динамически перестраивать кластеры в High-Available-конфигурации из 3, 5 или 7 узлов.

Аудит​


Rancher может журналировать все взаимодействия с API, сохраняя тело запросов и ответов, а также метаданные. Эта информация может передаваться в stdout или во внешнюю платформу сбора данных (Fluentd, syslog и др.). Поддерживается стандартное журналирование через API. Однако дальнейший анализ журналов и поиск нежелательных вызовов целиком возлагается на пользователя, Rancher не анализирует поток и не выдает предупреждений.

Обеспечение «самообслуживания» для разработчиков​


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

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

Резервирование​


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

Автомасштабирование​


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

  1. В кластере есть поды, которые не могут запуститься из-за нехватки ресурсов. В этом случае размер кластера увеличивается.
  2. В кластере есть узлы, которые не полностью загружены в течение заданного периода, при этом их поды можно перенести на другие существующие узлы. Тогда размер кластера уменьшается.

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

4. Безопасность и управление пользователями​


Active Directory/LDAP​


Rancher интегрирован с Active Directory, Azure AD, OpenLDAP и FreeIPA, с OAuth-провайдерами (GitHub и др.), а также с SAML-провайдерами (Keycloak и Okta). Все эти интеграции настраиваются на глобальном уровне.

SSO​


SSO (Single-Sign On) — централизованная внешняя аутентификация, когда пользователи могут использовать одну пару логина и пароля для входа во все кластеры Kubernetes. Rancher поддерживает SSO за счет интеграции с SAML-провайдерами Microsoft Active Directory, GitHub, Microsoft Azure AD, FreeIPA, OpenLDAP Microsoft AD FS, PingIdentity, Keycloak, Okta, Google OAuth и Shibboleth.

Политики безопасности на уровне подов и сети​


Политика сетевой безопасности — это спецификация взаимодействия ресурсов Kubernetes друг с другом и другими конечными точками сети. А политика безопасности подов (PSP, Pod Security Policy) определяет правила безопасности, которым поды должны соответствовать для запуска в кластере.

Rancher поддерживает PSP на глобальном уровне: можно создавать шаблоны политик и применять их к кластерам. Политики безопасности на уровне сети настраиваются по стандартной для Kubernetes процедуре в объекте Network policies.

Соблюдение и отслеживание контрольных показателей CIS​


CIS (Center for Internet Security) — это некоммерческая организация, разработавшая ряд критериев для оценки защищенности систем и сетей от атак. Rancher позволяет проверить, развернут ли кластер в соответствии с контрольными показателями CIS. Сканировать можно любые кластеры, в том числе размещенные в управляемых сервисах. Если какие-то показатели не соблюдаются, пользователи могут самостоятельно предпринять нужные действия в соответствии с предлагаемым CIS руководством.

RBAC-политики​


RBAC (Role-Based Access Control) — это система управления доступом на основе ролей. Rancher поддерживает все стандартные RBAC-политики Kubernetes. Они доступны на глобальном уровне, на уровне кластеров и проектов.

Управление секретами​


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

5. Интеграция с внешними инструментами​


Каталог приложений​


В Rancher есть встроенный каталог приложений, представляющих собой чарты Helm. Для установки того или иного продукта может потребоваться указать определенные параметры в форме установки или в файле questions.yaml, после этого по одному клику приложение будет развернуто в кластере.

Интеграция с IaaS (Terraform, Ansible)​


Rancher интегрирован с Terraform-провайдером, который позволяет разворачивать и управлять кластерами по принципу IaC. C другими подобными решениями Rancher не интегрирован, но его открытый API позволяет использовать Ansible, Puppet, Chef, группы автомасштабирования AWS, cloud-init и другие стратегии управления.

CI/CD​


Rancher интегрируется с любым CI-/CD-конвейером, работающим с Kubernetes. Если у пользователей еще нет собственной CI-/CD-системы, они могут воспользоваться встроенным в Rancher решением, основанным на Jenkins и работающим с такими репозиториями, как GitHub, Gitlab и Bitbucket.

Мониторинг​


По умолчанию в Rancher активированы базовые средства мониторинга. При необходимости администратор может включить расширенный мониторинг: на уровне кластера и проекта будут развернуты Prometheus и Grafana, а также установлены и сконфигурированы информационные панели. Для включения расширенного мониторинга нужно указать лимит ресурсов, установить и настроить соответствующие приложения. Оба вида мониторинга — базовый и расширенный — позволяют на уровне кластеров и проектов указывать объекты, для которых будут рассылаться оповещения в случае сбоев.

Логирование и экспорт логов​


Rancher поставляется с коннекторами для таких систем логирования, как Elasticsearch, Fluentd, Splunk, Kafka и syslog.

Интеграция с Service Mesh​


Service Mesh — это подход к управлению и сбору статистики в распределенной микросервисной среде с помощью индивидуальных прокси-серверов, прикрепленных к каждому микросервису. Service Mesh расширяет возможности по мониторингу, маршрутизации, трассировке, обеспечению безопасности и балансировке нагрузки. Благодаря этому подходу проще управлять сложными распределенными системами, «канареечными» выкатками (в том числе А-/В-тестированием), шифрованием и сквозной аутентификацией.

Из каталога приложений Rancher можно установить Istio — инструмент для организации сервисной сетки в Kubernetes-кластерах. За визуализацию метрик здесь отвечает инструмент Kiali. Если вас по каким-то причинам не устраивает Istio, вы можете установить из каталога приложений альтернативное решение.

Выводы​


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

Если вы хотите сложить с себя эти заботы, то вместо Rancher можно выбрать Kubernetes as service от VK Cloud Solutions. Тогда обслуживанием системы будет заниматься провайдер, а автомасштабирование до 100 дополнительных узлов можно будет настроить в пару кликов благодаря облачным ресурсам.

 
Сверху