Рубрики
Uncategorized

Сертифицированная ассоциация Docker Associate Series (часть -2): оркестрование контейнера

Введение в оркестровку в контейнере важная часть подготовки к сертификату Docker … Tagged with Docker, DevOps, новички.

Docker for Beginners Series (серия 3 частей)

Введение в оркестровку в контейнере

Основной частью подготовки к экзамену по сертифицированию Docker Associate (DCA) является ознакомление с оркестровкой контейнеров. Контейнерные оркестровки требуют набора инструментов и сценариев, которые вы можете использовать для размещения, настройки и управления контейнерами в производственной среде.

Развертывание в Docker обычно включает запуск различных приложений на разных хостах. Контейнерная оркестровая поможет вам настроить большое количество экземпляров приложений с помощью одной команды. Инструменты оркестровки контейнеров также помогают масштабировать экземпляры вашего приложения вверх или вниз в ответ на колебания спроса. Благодаря инструментам оркестровки контейнеров вы также можете обеспечить расширенную сеть между различными контейнерами.

Три из самых популярных инструментов оркестровки контейнеров — это Docker Swarm, Kubernetes и Mesos.

  • Docker Swarm очень популярен и легко настроить, но у него есть несколько недостатков, когда речь заходит о автоматической масштабе и настройках.

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

  • Kubernetes-это популярное решение для оркестровки контейнеров, которое предлагает множество вариантов настройки и непревзойденных возможностей автоматического масштаба.

Для этой части серии учебного пособия мы рассмотрим рой Docker.

Docker Swarm

Docker Swarm помогает вам легко запускать приложения на двигателе Docker через несколько узлов, которые находятся в одних и тех же контейнерах. С помощью Docker Swarm вы всегда можете отслеживать состояние, здоровье и производительность ваших контейнеров и хостов, которые запускают ваши приложения.

Когда вы готовитесь к экзамену DCA, некоторые темы роя Docker, которые вам понадобится глубокое понимание включения:

  • Архитектура роя
  • Настройка 2-узлового кластера в рой
  • Создание демонстрационной настройки кластера роя
  • Основные операции роя
  • Высокая высокая доступность и важность кворума
  • Прыг в режиме высокой доступности
  • Автоматическое замк и демо в классе
  • Swarm Services
  • Обновления, откаты и масштабирование
  • Типы услуг роя
  • Расположение в рой
  • Сервис в рой- базовые операции
  • Обслуживание в роях, глобальное, параллелизм и воспроизводится
  • Docker Config Objects
  • Сеть наложений Docker
  • Macvlan Networks
  • Swarm Service Discovery
  • Docker Stack

Давайте подробно рассмотрим некоторые из этих областей:

Архитектура роя

Когда вы учитесь на экзамен, вы должны развивать высокий уровень знакомства со структурой и архитектурой Docker Swarm.

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

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

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

Некоторые особенности архитектуры Docker Swarm включают:

  • Swarm легко настроить и поддерживать, так как все функции Docker Swarm встроены в двигатель Docker.
  • Docker Swarm развертывает приложения в декларативном формате.
  • Swarm Manager автоматически масштабирует и распространяет экземпляры приложений по узлам работников в зависимости от спроса.
  • Rolling Updates Reonfigure Your Application One-Time для более легкого управления изменениями.
  • Docker Swarm выполняет желаемое государственное примирение для самовосстановления.
  • Сертификаты SSL/TLS Безопасная связь между узлами через аутентификацию и шифрование
  • Использует внешний балансировщик нагрузки для распределения запросов между узлами

Настройка 2-узлового роя кластера

Этот урок-демонстрация того, как вы можете создать кластер роя Docker с 2-х рабочими узлами и 1 менеджер. Предварительные условия, необходимые для этой сессии, будут включать в себя:

  • Машины (узлы) развернуты и обозначены как менеджер, работник-1 и работник-2.
  • Машины должны установить двигатель Docker.
  • Каждому узлу должен быть назначен статический IP -адрес.
  • Порты TCP 2377, TCP & UDP 7946 и UDP 4789 должны быть открыты.

Чтобы инициализировать рой Docker на вашем узле менеджера, используйте следующую команду, пока менеджер активен:

$ docker swarm init

Swarm initialized: current node (whds9866c56gtgq3uf5jmfsip) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-19nlqoifkry03y8l5242zl6e2te2k9dvzebf5b70ihhpn7r4qh-aqtxt2sd0sh0hj2f8ceupj53g 172.17.0.27:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Эта команда инициализирует рой на выбранном узле, который теперь является менеджером. Команда также возвращает скрипт, который вы будете использовать для добавления работника в этот рой, как указано в интерфейсе командной строки.

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

$ docker swarm join-token worker

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-19nlqoifkry03y8l5242zl6e2te2k9dvzebf5b70ihhpn7r4qh-aqtxt2sd0sh0hj2f8ceupj53g 172.17.0.27:2377

Чтобы отобразить список ваших узлов и имен и статус работников, введите следующую команду на CLI:

$ docker node ls

Рой

Вы изучите некоторые из общих работ роя, которые включают в себя продвижение, истощение и удаление узлов.

Чтобы продвинуть узел для менеджера, вы запустите команду:

$ docker node promote worker1
Node worker1 promoted to a manager in the swarm.

Чтобы понизить узел менеджера для работника, вы запустите команду:

$ docker node demote worker1
Manager worker1 demoted in the swarm.

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

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

$ docker node update --availability drain worker1
worker1

Эта команда выводит контейнеры на рабочем 1 и запускает экземпляры реплик на другого работника, пока она не вернется.

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

$ docker node update --availability active worker1
worker1

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

$ docker swarm leave
Node left the swarm.

Рой высокая доступность- кворум

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

Алгоритм плота инициирует запросы в случайное время. Первый менеджер, который ответит, затем просит других менеджеров в кластере сделать его лидером. Если менеджеры отвечают положительно, лидер принимает эту роль, отправляя уведомления и обновляя общую базу данных в состоянии кластера. Эта база данных доступна для всех менеджеров в кластере. Прежде чем лидер внесет какие -либо изменения в кластер, он отправляет инструкции другим менеджерам. Менеджеры должны достичь кворума и согласиться до того, как будут внесены изменения. Если руководитель лидера теряет связь, другие менеджеры инициируют процесс, чтобы выбрать нового лидера.

Лучшие методы высокой доступности в роя включают:

  • Каждый кластер должен иметь нечетное количество менеджеров для легкой сегментации сети.
  • Каждое решение должно быть согласовано, когда число менеджеров подарков достигает кворума. Кворум для кластера с n менеджерами — n/2+1
  • Количество сбоев, которое может выдержать кластер, является толерантностью к неисправности и рассчитывается как 2*n -1
  • Распределить узлы менеджера одинаково по разным центрам обработки данных/зон доступности, чтобы кластер мог противостоять нарушениям по всему сайту.

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

Чтобы разрешить неудачный кластер, вы можете попытаться вернуть неудавшихся менеджеров в Интернете. Если это не удается, вы можете создать новый кластер, используя команду Force-Create. Это будет здоровый, одно управляющий кластер. Команда для формы Force — это:

$ docker swarm init --force-new-cluster

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

Swarm Services

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

Чтобы создать 3 реплики вашего приложения, используя службу Docker, запустите команду:

$ docker service create --replicas=3 App1

Когда вы развернете свои приложения, сервер API создает услугу, которая затем разделена на задачи оркестрером. Затем выплата назначает каждому заданию IP -адрес, а диспетчер назначает эти задачи отдельным работникам. Затем планировщик управляет работниками.

Вот несколько общих задач обслуживания и их команды Docker.

Создать сеть наложения

$ docker network create --driver overlay my-overlay-network

Создайте подсеть

$ docker network create --driver overlay --subnet 10.15.0.0/16 my-overlay-network 

Сделайте сеть прикрепленной к внешним контейнерам

$ docker network create --driver overlay --attachable my-overlay-network

Включить шифрование IPS

$ docker network create --driver overlay --opt encrypted my-overlay-network

Прикрепить сервис к сети

$ docker service create --network my-overlay-network my-web-service

Удалить недавно созданную сеть

$ docker service create --network my-overlay-network my-web-service

Удалить все сети

$ docker network prune

Вот некоторые сетевые порты и их цели.

TCP 2377: Cluster Management Communications TCP/UDP: Обнаружение сети контейнеров/связь между узлами UDP 4789: сетевой трафик наложения

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

$ docker service create -p 80:5000 my-web-server

или же

docker service create --publish published=80, target=5000 my-web-server

Включить UDP:

$ docker service create -p 80:5000/UDP my-web-server

или же

$ docker service create --publish published=80, target=5000, protocol=UDP my-web-server

Swarm Service Discovery

Контейнеры и услуги в узле могут напрямую общаться друг с другом, используя свои имена. Чтобы убедиться, что эти контейнеры могут «видеть» друг друга, вы должны создать оверлейную сеть, в которой вы должны разместить приложение и службу именования. Например:

Создайте оверлейную сеть:

$ docker network create --driver=overlay app-network

Затем создайте сервер API в этой сети:

$ docker service create --name=api-server --replicas=2 --network=app-network api server

Создайте задачу веб -службы:

$ docker service create --name=web --network=app-network web

Службы теперь могут охватить друг друга, используя свои имена услуг. Веб-сервер теперь может достичь сервера API с помощью API-Server имени службы.

Docker Stack

В Docker стек — это группа взаимосвязанных услуг, которые вместе составляют функциональность приложения. Все настройки конфигурации вашего приложения и изменения хранятся в файле конфигурации Docker, известного как стек Docker или файл Docker Compose. Docker Compose позволяет создавать файлы стека в YAML, что делает ваше приложение проще для управления, распределенного и масштабируемого. Файл стека Docker также позволяет вам выполнять проверки здоровья в вашем контейнере и устанавливать период изящества, в течение которого проверка здоровья остается неактивной.

Чтобы создать файл стека Docker, запустите команду:

$ docker stack deploy --compose-file docker-compose.yml
Other Docker Stack Commands include:

Задача и команда

Создайте стек

$ docker stack deploy

Перечислите активные стеки

$ docker stack ls

Список сервисов, созданных стеком

$ docker stack ps

Список задач, работающих в стеке

$ docker stack ps

Удалить стек

$ docker stack rm

Docker Storage

Чтобы понять, как инструменты оркестровки контейнеров управляют хранением, важно знать, как Docker управляет хранилищем в контейнерах. Знакомство с хранением в Docker будет иметь большое значение, чтобы помочь вам управлять хранением с Kubernetes. Хранение в Docker управляется двумя методами: драйверы хранения и объемные драйверы.

Docker использует драйверы хранения, чтобы включить слоистую архитектуру. Они прикреплены к контейнерам по умолчанию и точечным файловым системам к пути по умолчанию:/var/lib/docker, где он хранит файлы в подпапках, таких как AUF, контейнеры, изображения и объемы.

Популярные драйверы хранения включают в себя: AUFS, ZFS, BDRFS, Mapper Device, Overlay и Overtay2.

Плагины драйвера громкости в Docker

Драйверы объема помогают создавать постоянные объемы в Docker. По умолчанию томам назначается локальный драйвер, который хранит данные в каталоге громкости хоста.

Существуют сторонние плагины драйвера громкости, которые помогают с хранением на различных общедоступных облачных платформах. К ним относятся: Azure File Storage, Convoy, Digitalocean Blockstorage, Flocker, Gce-Docker, Glusterfs, NetApp, Rexray, Portworx, VMware vSphere Storage, среди прочего. Docker автоматически назначает соответствующий драйвер объема в зависимости от операционной системы и потребностей приложения.

Чтобы создать громкость на Amazon AWS Elasticblockstorage, запустите команду:

$ docker run -it \
--name app1
    --volume driver rexray/ebs
    --mount src=ebs -vol,target=/var/lib/app1
    app1

Эта команда создает постоянное хранилище громкости на Amazon EBS в расположении файла по умолчанию APP1.

Образец вопросов:

Вот быстрый тест, который поможет вам оценить ваши знания. Оставьте свои ответы в комментариях ниже и отметьте нас обратно.

Быстрый совет — вопросы ниже могут включать в себя смесь типов DOMC и MCQ.

Какая команда можно использовать для удаления стека Kubeapp?

  • [A] Docker Stack Deploy Kubeapp
  • [B] Docker Stack LS Kubeapp
  • [C] Docker Stack Services Kubeapp
  • [D] Docker Stack Rm Kubeapp

Какая команда может быть использована для продвижения работника2 в узле менеджера? Выберите правильный ответ.

  • [A] Docker Promote Node Worker2
  • [B] Docker Node Promote Рабочий2
  • [C] Docker Swarm Node Promote Worker2
  • [D Docker Swarm Promote Node Worker2

Какова команда перечислить стеки на хосте Docker?

  • [A] Docker Stack Deploy
  • [B] Docker Stack LS
  • [C] Docker Stack Services
  • [D] Docker Stack PS

Какое максимальное количество менеджеров возможна в роя кластера?

  • [A] 3
  • [B] 5
  • [C] 7
  • [D] Безлимитный

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

  • [A] Docker Stack
  • [B] Услуги
  • [C] стручки
  • [D] Ничего из вышеперечисленного

Вывод

После того, как вы поняли архитектуру роя, создали кластер и обеспечили высокую доступность, вы бы разработали достаточно знакомства для борьбы с реальными проектами. Swarm Services поможет вам автоматизировать взаимодействие между различными узлами, чтобы помочь с балансировкой нагрузки для распределенных контейнеров. Следуя этому руководству, у вас будет достаточно знаний о важности оркестровки контейнеров и того, как Docker Swarm предлагает простую, без суеты структуру, которая помогает сохранить ваши контейнеры здоровыми.

Чтобы проверить, где вы стоите в своем сертификационном путешествии Docker, пройдите тест на готовность DCA по адресу dca.kodekloud.com. На Kodekloud вы также получаете путь обучения с рекомендациями, образцами вопросов и советов для сдачи экзамена DCA.

Docker for Beginners Series (серия 3 частей)

Оригинал: «https://dev.to/kodekloud/docker-certified-associate-exam-series-part-2-container-orchestration-3e3f»