В этой статье я сделаю обзор 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 имеет следующие особенности / преимущества:
- Rancher может управлять несколькими кластерами k8s, он может управлять кластером k8s в публичных облаках, таких как AWS и GKE, он также может управлять кластерами k8s в центрах обработки данных и гибридных средах.
- Rancher поддерживает утвержденные CNCF (Cloud Native Computing Foundation) дистрибутивы k8s и, отвечая спецификациям CNFS, может поддерживать большинство продуктов и проектов k8s.
- 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:
- Обозреватель кластера: сервис на основе графического интерфейса пользователя для просмотра всех объектов k8s и показателей использования в кластере. Вы можете увидеть пространство имен кластера, модули, рабочие узлы, CronJobs, DaemonSets, Deployment и т. Д.
- Непрерывная доставка: конвейеры напрямую подключаются к репозиториям на основе Git и настраивают автоматическое развертывание данной ветви в кластерах.
- Приложения на основе Helm-диаграмм и торговая площадка: Предоставляет каталог Helm-диаграмм для упрощенного развертывания общих приложений. Например, Prometheus, Longhorn и Nginx. Вы также можете импортировать сторонние каталоги и диаграммы или даже создавать собственные каталоги диаграмм для вашей собственной организации.
- Безопасность: он позволяет управлять доступом пользователей с помощью элементов управления 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:
- Longhorn состоит из томов, которые представляют собой обычные блочные устройства. У каждого из них есть N реплик в зависимости от допуска, определяемого пользователем.
- Цель состоит в том, чтобы предоставить хранилище модулю в кластере, где бы он ни находился.
- На каждом узле работает механизм (контейнер) Longhorn, который может организовать соединение с репликой, если это необходимо модулю на этом узле. Путь к данным полностью распределен, а это означает, что для передачи данных не требуется центральная точка.
- Данные для каждого тома 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