В этой статье я сделаю обзор Rancher с высоты 30 000 футов и воспользуюсь примером, чтобы показать вам, как управлять несколькими кластерами k8s (общедоступным облаком и частным центром обработки данных) с помощью Rancher.

Что такое Rancher?

Rancher - это инструмент с открытым исходным кодом, созданный компанией Rancher Labs (которая была приобретена SUSE в 2020 году). Название владелец ранчо происходит от известной поговорки: В облаке серверы - это крупный рогатый скот, а не домашние животные. Поэтому, когда у вас много крупного рогатого скота, вам нужен владелец ранчо, который поможет управлять вашими стадами.

Rancher предоставляет ряд инструментов и услуг, три основных продукта:

  • RKE: двигатель k8s
  • K3s: инструмент для установки упрощенной / оптимизированной версии k8s на серверах с низкой вычислительной мощностью.
  • Longhorn: обеспечивает постоянное хранилище в эфемерной инфраструктуре.

Так что же делает Rancher? Предполагая, что у вас уже есть некоторые основные термины и рабочие процессы k8s (если нет, вы можете проверить мои подробные статьи о k8s), как k8s оркестрирует, управляет и развертывает контейнеры; Rancher организует, управляет и развертывает кластеры k8s. Это очень высокоуровневое вступление о том, что такое Rancher.

Более точное определение: Rancher - это полный стек программного обеспечения для команд, внедряющих контейнеры. Он решает операционные проблемы и проблемы безопасности, связанные с управлением несколькими кластерами k8s. Он также предоставляет интегрированные инструменты для запуска контейнерных рабочих нагрузок для команд DevOps.

Почему владелец ранчо?

Rancher имеет следующие особенности / преимущества:

  1. Rancher может управлять несколькими кластерами k8s, он может управлять кластером k8s в публичных облаках, таких как AWS и GKE, он также может управлять кластерами k8s в центрах обработки данных и гибридных средах.
  2. Rancher поддерживает утвержденные CNCF (Cloud Native Computing Foundation) дистрибутивы k8s и, отвечая спецификациям CNFS, может поддерживать большинство продуктов и проектов k8s.
  3. Rancher предлагает тесную интеграцию с управляемыми сервисами k8s от всех основных поставщиков общедоступного облака. Он может работать напрямую как с API k8s, так и с API облачного провайдера, что позволяет сохранить все преимущества управляемой платформы k8s.

Видимость организации и изоляция команды

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

Инструменты Rancher CICD

Rancher также предоставляет инструменты CICD для управления рабочими процессами на основе Git и развертыванием в нескольких кластерах. После настройки Rancher и GitHub вы можете развернуть контейнеры с Jenkins для автоматизации выполнения конвейера:

  • Создайте свое приложение от кода до изображения.
  • Проверяйте свои сборки.
  • Разверните образы сборки в кластере.
  • Запустите модульные тесты.
  • Запустите регрессионные тесты.

Мультиоблачные и гибридные среды

Rancher может управлять кластерами в AWS, Azure, GCP и Digital Ocean, а также кластерами в частных центрах обработки данных. Rancher гарантирует, что все ваши кластеры k8s управляются в одном месте и в соответствии с единым стандартом.

Контроль безопасности

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

Особенности Rancher

Rancher предоставляет следующие основные функции для упрощения работы и управления кластерами k8s:

  1. Обозреватель кластера: сервис на основе графического интерфейса пользователя для просмотра всех объектов k8s и показателей использования в кластере. Вы можете увидеть пространство имен кластера, модули, рабочие узлы, CronJobs, DaemonSets, Deployment и т. Д.
  2. Непрерывная доставка: конвейеры напрямую подключаются к репозиториям на основе Git и настраивают автоматическое развертывание данной ветви в кластерах.
  3. Приложения на основе Helm-диаграмм и торговая площадка: Предоставляет каталог Helm-диаграмм для упрощенного развертывания общих приложений. Например, Prometheus, Longhorn и Nginx. Вы также можете импортировать сторонние каталоги и диаграммы или даже создавать собственные каталоги диаграмм для вашей собственной организации.
  4. Безопасность: он позволяет управлять доступом пользователей с помощью элементов управления RBAC (контроль доступа на основе ролей), управлять политиками безопасности Pod и аутентифицироваться у сторонних поставщиков (AD, GitHub, Okta и т. д.).

RKE - Двигатель Rancher k8s

RKE расшифровывается как «Rancher k8s Engine». RKE - это сертифицированный CNCF (Cloud Native Computing Foundation) дистрибутив k8s, не зависящий от операционной системы. Самая большая разница между RKE и k8s заключается в следующем: «RKE запускает k8s в контейнерах Docker, вместо того, чтобы устанавливать и настраивать k8s вручную».

Поскольку он полностью работает в контейнерах Docker, это означает, что он может работать с «голым железом» или виртуальными машинами, если вы можете запускать поддерживаемую версию Docker. Цель RKE - решить сложность установки кластеров k8s и упростить операции k8s. Вы также можете подумать, что RKE - это оболочка для k8s, чтобы немного упростить реализацию k8s.

K3S

k3s - это легкий дистрибутив k8s, созданный в основном для IoT (Интернета вещей) и периферийных вычислений. Он имеет следующие ключевые преимущества:

  • Он специально оптимизирован для небольших вычислений.
  • Он упакован как бинарный файл размером 40 МБ.
  • Его легко установить, всего один двоичный файл со всеми необходимыми компонентами.

Longhorn

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

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

Архитектура Longhorn:

  1. Longhorn состоит из томов, которые представляют собой обычные блочные устройства. У каждого из них есть N реплик в зависимости от допуска, определяемого пользователем.
  2. Цель состоит в том, чтобы предоставить хранилище модулю в кластере, где бы он ни находился.
  3. На каждом узле работает механизм (контейнер) Longhorn, который может организовать соединение с репликой, если это необходимо модулю на этом узле. Путь к данным полностью распределен, а это означает, что для передачи данных не требуется центральная точка.
  4. Данные для каждого тома Longhorn хранятся в локальном блочном хранилище. Это означает, что Longhorn может использовать любой тип хранилища, будь то обычный локальный диск, корпоративная SAN или AWS EBS. Longhorn управляет хранилищем на уровне блоков, которое записывается в локальную файловую систему с использованием разреженных файлов Linux.

Практический пример

В этом примере у меня есть два экземпляра AWS EC2: tony-racher-server и tony-k3s. Один для установки сервера Rancher и один для установки кластера K3S. Сначала я использую экземпляр rancher-server для настройки и создания кластера AWS EKS, затем я установлю кластер K3S на экземпляре tony-k3s и импортирую его в rancher-server. Вы можете получить представление о том, как использовать Rancher для управления несколькими кластерами k8s.

и для обоих случаев у меня есть следующие правила входа / выхода групп безопасности (для простоты этой лабораторной работы):

Установить Rancher

Установить Rancher действительно просто, поскольку он работает в контейнерах Docker:

# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:latest 

Доступ к ранчо

Теперь у вас должна быть возможность получить доступ к серверу Rancher из веб-браузера:

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

Поздравляю, вы успешно установили и настроили Rancher!

Создать кластер EKS

Нажмите кнопку «Создать», затем выберите «AWS EKS»:

Создайте пользователя IAM с именем rancher_service_user с Administrator разрешением (для простоты в продукте должно быть больше ограничений) и сгенерируйте AWS access keys и access secrets

Нажмите «Создать» и в следующей конфигурации укажите «test-nodegorup» в качестве группы управляемых узлов. Через несколько минут вы увидите, что готовится кластер EKS:

Перейдем к импорту локального кластера k3s, поскольку подготовка EKS занимает 15-20 минут.

Создать кластер k3s

Теперь давайте создадим кластер k3s на экземпляре tony-k3s EC2. Прежде всего, подключите ssh к хосту, а затем выполните следующую команду:

# curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644

Убедитесь, что ваш кластер k3s запущен:

# kubectl get svc NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   68s

Импортировать кластер k3s в ранчо

В веб-браузере Rancher нажмите «Импортировать существующие» и выберите «Generic»:

Дайте имя и оставьте все по умолчанию:

Теперь запустите предоставленные команды на сервере k3s:

Я запускаю следующую команду:

Тогда вы сможете увидеть свой кластер k3s в Rancher (также как и кластер EKS)!

Заключение

В этой статье я уделил большое внимание Rancher и некоторым основным продуктам, таким как RKE, k3s и Longhorn. Я также показал вам, как использовать Rancher для управления несколькими кластерами k8s как из общедоступных облачных платформ, так и из локальной среды.

Надеюсь, вам понравилась моя статья!

Больше контента на plainenglish.io