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

_Автор выбрал Code Org, чтобы получить пожертвование в рамках программы Write for DOnations.

Вступление

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

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

Предпосылки

Прежде чем приступить к работе с этим учебником, you вам потребуется учетная запись DigitalOcean, в дополнение к следующему:

  • Персональный токен DigitalOcean, который вы можете создать, следуя инструкциям в https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2#how-to-generate-a- личный токен доступа [этот урок]. Этот токен позволит Rancher иметь доступ API к вашей учетной записи DigitalOcean.

  • Полностью зарегистрированное доменное имя с записью A, которая указывает на IP-адрес капли, которую вы создали на шаге 1. Вы можете узнать, как указать домены на дроплеты DigitalOcean, прочитав Domains и DNS документацию DigitalOcean. В этом руководстве замените свой домен на ++.

Шаг 1 - Создание капли с установленным Docker

Чтобы запустить и настроить Rancher, вам нужно создать новую Droplet с установленным Docker. Для этого вы можете использовать образ Docker DigitalOcean.

Сначала войдите в свою учетную запись DigitalOcean и выберите * Create Droplet *. Затем в разделе * Выберите изображение * перейдите на вкладку * Торговая площадка *. Выберите * Docker 18.06.1 ~ ce ~ 3 18.04 *.

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step1a.png [Выберите изображение Docker 18.06 из меню приложений в один клик]

Затем выберите каплю размером не менее * 2 ГБ * и выберите область центра данных для вашей капли.

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

Для подготовки сервера и загрузки Docker потребуется несколько минут. После успешного развертывания Droplet вы готовы запустить Rancher в новом контейнере Docker.

Шаг 2 - Запуск и настройка Rancher

Капля, созданная на шаге 1, будет запускать Rancher в контейнере Docker. На этом шаге вы запустите контейнер Rancher и убедитесь, что у него есть SSL-сертификат Let Encrypt, чтобы вы могли безопасно получить доступ к панели администратора Rancher. Let’s Encrypt - это автоматизированный центр сертификации с открытым исходным кодом, который позволяет разработчикам бесплатно предоставлять девяностодневные сертификаты SSL.

Войдите в свой новый дроплет:

ssh root@

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

docker -v

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

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

Опция + - acme-domain + устанавливает SSL-сертификат от Let Encrypt, чтобы гарантировать, что ваш администратор Rancher обслуживается по HTTPS. Этот сценарий также инструктирует Droplet извлечь https://hub.docker.com/r/rancher/rancher/ [+ rancher / rancher + Docker image] и запустить экземпляр Rancher в контейнере, который автоматически перезапустится, если он когда-либо произойдет. выходит случайно Чтобы упростить восстановление в случае потери данных, скрипт монтирует на хост-компьютере том (в + / host / rancher +), который содержит данные Rancher.

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

docker ps

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

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

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

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

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

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step3a.png [Установите пароль Rancher, используя подсказку]

Когда вас попросят указать URL-адрес вашего * Rancher-сервера *, используйте доменное имя, указанное на вашем Droplet.

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

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step3b.png [домашний экран администратора Rancher]

Вы готовы перейти к настройке кластера Rancher.

Шаг 3 - Настройка кластера с одним узлом

Чтобы использовать Rancher, вам нужно создать cluster хотя бы с одним node. Кластер - это группа из одного или нескольких узлов. This Guide даст вам больше информации об архитектуре Kubernetes. В этом руководстве узлы соответствуют дроплетам, которыми будет управлять Rancher. Pods представляют группу запущенных Docker-контейнеров в Droplet. Каждый узел может работать с несколькими модулями. Используя пользовательский интерфейс Rancher, вы можете настроить кластеры и узлы в базовой среде Kubernetes.

К концу этого шага вы настроите кластер с одним узлом, готовым для запуска вашего первого модуля.

В Rancher нажмите * Добавить кластер * и выберите * DigitalOcean * в качестве * поставщика инфраструктуры *.

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step4a.png [Выберите DigitalOcean из списка поставщиков инфраструктуры]

Введите * Имя кластера * и прокрутите вниз до раздела * Node Pools *. Введите * Префикс имени *, оставьте * Count * на * 1 * на данный момент и проверьте * etcd *, * Control Plane * и * Worker *.

  • * https: //kubernetes.io/docs/concepts/overview/components/#etcd [etcd] * - это система хранения ключевых значений Kubernetes для поддержания состояния всей среды. Чтобы поддерживать высокую доступность, вы должны запустить три или пять узлов etcd, чтобы в случае отказа один из них ваша среда все еще была управляемой.

  • * https: //kubernetes.io/docs/concepts/#kubernetes-control-plane [Control Plane] * проверяет все объекты Kubernetes - такие как модули - в вашей среде и поддерживает их в актуальном состоянии с помощью предоставленной вами конфигурации в интерфейсе администратора Rancher.

  • * https: //kubernetes.io/docs/concepts/architecture/nodes/ [Workers] * запускать фактические рабочие нагрузки и агенты мониторинга, которые обеспечивают работу ваших контейнеров и работу в сети. Рабочие узлы - это место, где ваши модули будут запускать программное обеспечение, которое вы развернете.

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step4b.png [Создать пул узлов с одним узлом]

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

Введите свой персональный токен DigitalOcean в поле ввода * Access Token * и нажмите * Next: Configure Droplet *.

Затем выберите те же * Region * и * Droplet Size *, что и на шаге 1. Для * Image * обязательно выберите * Ubuntu 16.04.5 x64 *, так как в настоящее время существует проблема совместимости a с Rancher и Ubuntu 18.04. Нажмите * Создать *, чтобы сохранить шаблон.

Наконец, нажмите кнопку * Создать * на странице * Добавить кластер *, чтобы начать процесс подготовки. Ранчеру потребуется несколько минут, чтобы завершить этот шаг, но вы увидите новую каплю на своей панели DigitalOcean Droplets, когда это будет сделано.

На этом шаге вы создали новый кластер и узел, на котором вы будете развертывать рабочую нагрузку в следующем разделе.

Шаг 4. Развертывание рабочей нагрузки веб-приложения

Когда новый кластер и узел готовы, вы можете развернуть свой первый pod в workload. Https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/[Kubernetes Pod] - это наименьшая единица работы, доступная для Kubernetes и, как следствие, для Rancher. Рабочие нагрузки описывают одну группу модулей, которые вы развертываете вместе. Например, вы можете запустить несколько модулей вашего веб-сервера в одной рабочей нагрузке, чтобы гарантировать, что если один модуль замедляется с определенным запросом, другие экземпляры могут обрабатывать входящие запросы. В этом разделе вы собираетесь развернуть Nginx Hello World image в один модуль.

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

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

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

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step5b.png [Форма ввода для развертывания рабочей нагрузки]

Чтобы запустить модуль, прокрутите его вниз и нажмите «Запустить».

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

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step5c.png [адрес сервера, имя сервера и другие выходные данные из запущенного контейнера NGINX]

  • Адрес сервера * и порт, который вы видите на этой странице, относятся к внутренней сети Docker, а не к общему IP-адресу, который вы видите в своем браузере. Это означает, что Rancher работает и маршрутизирует трафик от + http: //: 30000 / + к рабочей нагрузке, как и ожидалось.

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

Шаг 5 - Масштабирование узлов и модулей

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

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

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

Перейдите на домашнюю страницу кластера вашей установки Rancher, выбрав * Cluster: * в верхней панели навигации. Затем нажмите * Узлы * в верхней панели навигации.

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step6a.png [Используйте верхний выпадающий список для выбора своего кластера]

На этой странице показано, что у вас есть один работающий узел в кластере. Чтобы добавить больше узлов, нажмите * Изменить кластер * и выделите раздел * Пулы узлов * внизу страницы. Нажмите * Добавить пул узлов *, введите префикс и установите флажок * Рабочий *. Нажмите * Сохранить *, чтобы обновить кластер.

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step6b.png [Добавить пул узлов только в качестве рабочего]

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

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

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

изображение: https: //assets.digitalocean.com/articles/multirancher_1804/step6c.png [Запуск трех модулей Hello World в рабочей нагрузке]

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

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

Заключение

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

Related