Настройка многоузлового развертывания с помощью Rancher 2.1, Kubernetes и Docker Machine в Ubuntu 18.04

Rancher – это популярная открытая платформа для управления контейнерами. Выпущенный в начале 2018 года, Rancher 2.X работает в Kubernetes и включает новые инструменты, такие как управление несколькими кластерами и встроенные конвейеры CI. В дополнение к расширенным средствам безопасности, масштабируемости и простоте развертывания, которые уже есть в Kubernetes, Rancher предлагает графический интерфейс пользователя, который упрощает управление контейнерами. С помощью графического интерфейса Rancher пользователи могут управлять секретными данными, безопасно обрабатывать роли и права доступа, масштабировать ноды и поды, а также настраивать балансировку нагрузки и тома без командной строки или сложных файлов YAML.

Этот мануал поможет вам развернуть многоузловой сервер Rancher 2.1 с помощью Docker Machine в Ubuntu 18.04. В результате вы сможете выполнить оркестровку нового облачного сервера и подов через Rancher UI, быстро подгоняя среду под изменившиеся требования приложения.

Требования

  • Облачный сервер (2 Гб памяти минимум) с предварительно установленным Docker и Rancher.
  • Токен доступа, с помощью которого Rancher сможет получить доступ к API вашего аккаунта хостинга.
  • Полностью зарегистрированное доменное имя и запись A, которая указывает на IP-адрес вашего сервера. В мануале мы используем домен example.com.

1: Запуск и настройка Rancher

Сначала нужно запустить контейнер Rancher и убедиться, что у него есть SSL-сертификат Let’s Encrypt, чтобы у вас был доступ к панели администратора Rancher.

Let’s Encrypt – это автоматизированный центр сертификации с открытым исходным кодом, который позволяет разработчикам бесплатно получать сертификаты SSL, действительные в течение 90 дней.

Войдите на сервер:

ssh root@your_server_ip

Чтобы убедиться, что Docker запущен, введите:

docker -v

Убедитесь, что указанная версия Docker соответствует вашим требованиям. Вы можете запустить Rancher с уже установленным сертификатом Let’s Encrypt, выполнив следующую команду:

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /host/rancher:/var/lib/rancher rancher/rancher --acme-domain example.com

Опция —acme-domain устанавливает SSL-сертификат от Let’s Encrypt, это гарантирует, что ваш администратор Rancher обслуживается по HTTPS. Этот сценарий также извлекает образ Docker rancher/rancher и запускает экземпляр Rancher в контейнере, который автоматически перезапустится при случайном сбое. Чтобы упростить восстановление в случае потери данных, скрипт монтирует на хост-компьютере том (в /host/rancher), содержащий данные Rancher.

Чтобы увидеть список всех запущенных контейнеров, введите:

docker ps

Вы увидите примерно такой вывод (с уникальным идентификатором контейнера и именем):

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
7b2afed0a599        rancher/rancher     "entrypoint.sh"     12 seconds ago      Up 11 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   wizardly_fermat

Если контейнер не запущен, вы можете снова выполнить команду docker run.

Прежде чем вы сможете получить доступ к панели администратора Rancher, вам необходимо установить пароль администратора и URL-адрес сервера Rancher. Интерфейс администратора Rancher предоставит вам доступ ко всем запущенным нодам, подам и секретным ключам, поэтому очень важно использовать надежный пароль.

Перейдите по домену, который указывает на ваш сервер, в веб-браузере. При первом посещении этого адреса Rancher разрешит вам установить пароль:

Welcome to Rancher
The first order of business is to set a strong password for the default admin user.

Когда программа запросит Rancher server URL, используйте домен, направленный на ваш сервер.

Настройка сервера Rancher завершена. Вы увидите домашний экран администратора Rancher.

Теперь можно приступать к настройке кластера.

2: Настройка одноузлового кластера

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

Кластер – это группа из одного или нескольких нод. Мануал Краткий обзор Kubernetes расскажет вам больше об архитектуре Kubernetes. В этом мануале ноды соответствуют серверам, которыми будет управлять Rancher. Поды представляют группу работающих на сервере Docker-контейнеров. Каждая нода может работать с несколькими подами. Используя пользовательский интерфейс Rancher, вы можете настроить кластеры и ноды в базовой среде Kubernetes.

В результате у вас будет кластер с одной нодой, готовый запустить первый под.

В панели Rancher нажмите Add Cluster и в Infrastructure provider выберите провайдера.

Введите имя кластера в Cluster Name и прокрутите вниз до раздела Node Pools. Введите Name Prefix, на данный момент оставьте значение Count 1 и поставьте галочки etcd, Control Plane и Worker.

  • etcd – это система хранения Kubernetes типа «ключ-значение» для поддержания состояния всей среды. Чтобы поддерживать высокую доступность, вы должны запустить три или пять нод etcd, чтобы в случае отказа одной из них ваша среда оставалась управляемой.
  • Control Plane проверяет все объекты Kubernetes (такие как поды) в вашей среде и поддерживает их в соответствии с конфигурацией, которую вы предоставляете в интерфейсе администратора Rancher.
  • Workers – это рабочие ноды. Они обрабатывают рабочую нагрузку и агенты мониторинга, которые следят за работой контейнеров в сети. Рабочие ноды – это место, где поды будут запускать программное обеспечение, которое вы развернете.

Прежде чем создать кластер, кликните Add Node Template, чтобы настроить параметры новой ноды.

Введите свой токен доступа в поле Access Token и нажмите Next.

Затем укажите регион, размер сервера, образ (поля могут отличаться в зависимости от провайдера). Нажмите Create.

Примечание: На момент написания мануала у Rancher есть проблемы в совместимости с Ubuntu 18.04.

Наконец, нажмите кнопку Create на странице Add Cluster, чтобы начать процесс подготовки. Rancher понадобится несколько минут, чтобы завершить этот этап.

Итак, вы создали новый кластер и ноду, на которой вы можете развернуть приложение в следующем разделе.

3: Развертывание веб-приложения

Когда новый кластер и нода готовы, вы можете развернуть свой первый под в рабочей нагрузке. Поды в Kubernetes – наименьшая единица работы. Рабочие нагрузки описывают одну группу подов, которую вы развертываете вместе. Например, вы можете запустить несколько подов веб-сервера в одной рабочей нагрузке, чтобы другие экземпляры могли обрабатывать входящие запросы, если один под затормозит с определенным запросом. В этом разделе вы узнаете, как развернуть образ Nginx Hello World в одном поде.

Наведите курсор на Global в заголовке и выберите Default. Это откроет панель инструментов проекта Default. В этом мануале мы сосредоточимся на развертывании отдельного проекта, но с помощью этой панели вы также можете создавать несколько проектов (чтобы получить несколько изолированных сред).

Чтобы начать настройку, нажмите Deploy.

Введите имя в Name и nginxdemos/hello в поле Docker Image. Затем свяжите порт 80 в контейнере с портом 30000 на хост-нодах. Это обеспечит доступность развернутых модулей на каждой ноде через порт 30000. В поле Protocol можно оставить TCP, а в следующем выпадающем меню – NodePort.

Примечание: Этот метод запуска подов на порте каждой ноды проще, но Rancher также включает Ingress, чтобы обеспечить балансировку нагрузки и SSL-терминацию для сред производства.

Чтобы запустить под, прокрутите вниз и кликните Launch.

Rancher вернет вас на домашнюю страницу проекта по умолчанию, и через несколько секунд ваш под будет готов. Нажмите ссылку 30000/tcp чуть ниже имени рабочей нагрузки, и Rancher откроет новую вкладку с информацией о среде работающего контейнера.

Server address и порт на странице принадлежат внутренней сети Docker, это не внешний IP, который вы видите в браузере. Это значит, что Rancher работает и направляет трафик с http://first_node_ip:30000/ на рабочую нагрузку.

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

4: Масштабирование нод и подов

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

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

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

На этом этапе мы попробуем увеличить размеры нод и подов и добавить еще одну ноду в кластер Rancher.

Примечание: В ходе этого раздела новая нода будет автоматически оркестрирована через API, а это повлечет дополнительные расходы.

Перейдите на домашнюю страницу кластера Rancher, выбрав Cluster: your-cluster-name в верхней панели. Затем нажмите Nodes в верхней панели навигации.

На этой странице показано, что у вас в кластере есть одна работающая нода. Чтобы добавить больше нод, нажмите Edit Cluster и перейдите к разделу Node Pools в нижней части страницы. Нажмите Add Node Pool, введите префикс и установите флажок Worker. Нажмите Save, чтобы обновить кластер.

В течение 2–5 минут Rancher предоставит вторую ноду и отметит ее как активную в панели управления. Эта нода является только рабочей, что означает, что она не будет запускать контейнеры Rancher etcd или Control Plane. Это дает рабочей ноде больше возможностей для обработки нагрузок.

Примечание: Наличие нечетного числа нод etcd гарантирует, что они всегда смогут достичь кворума. Если у вас есть только одна нода etcd, возникает риск, что кластер будет недоступен, если эта нода выйдет из строя. В производственной среде рекомендуется запускать три или пять нод etcd.

Когда вторая нода будет готова, вы сможете увидеть рабочую нагрузку, развернутую на предыдущем этапе, перейдя по адресу http://second_node_ip:30000/.

Масштабирование нод позволяет вам создать больше серверов для распределения ваших рабочих нагрузок, но вы также можете запускать больше экземпляров каждого пода. Чтобы добавить больше подов, вернитесь на страницу проекта Default, нажмите стрелку слева от рабочей нагрузки hello-world и дважды нажмите +, чтобы добавить еще два пода.

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

Теперь вы можете масштабировать ваши ноды и модули в соответствии с требованиями приложения.

Заключение

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

Tags: , ,