Как использовать команду docker node update для управления узлами кластера (swarm nodes)

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь управлять узлами Docker Swarm с помощью команды docker node update. Вы изучите различные функции этой команды, включая обновление доступности узла для управления размещением задач, добавление и удаление меток (labels) для классификации узлов в рамках ограничений планирования задач, а также изменение роли узла в кластере Swarm.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555186{{"Как использовать команду docker node update для управления узлами кластера (swarm nodes)"}} docker/ps -.-> lab-555186{{"Как использовать команду docker node update для управления узлами кластера (swarm nodes)"}} docker/exec -.-> lab-555186{{"Как использовать команду docker node update для управления узлами кластера (swarm nodes)"}} docker/inspect -.-> lab-555186{{"Как использовать команду docker node update для управления узлами кластера (swarm nodes)"}} end

Обновление доступности узла для приостановки

На этом шаге мы научимся обновлять доступность узла в кластере Docker Swarm. Доступность узла определяет, может ли он получать новые задачи. Возможные состояния доступности: active (активный), pause (приостановленный) и drain (освобождающийся).

  • active: Узел может получать новые задачи. Это состояние по умолчанию.
  • pause: Узел не будет получать новые задачи, но существующие задачи будут продолжать выполняться.
  • drain: Узел не будет получать новые задачи, и существующие задачи будут остановлены и перепланированы на других узлах.

Мы изменим доступность текущего узла на pause. Сначала нам нужно найти идентификатор текущего узла. Мы можем использовать команду docker node ls для вывода списка узлов в кластере.

docker node ls

В выводе будет список узлов с указанием их идентификатора, имени узла, статуса, доступности и статуса менеджера. Определите идентификатор узла, на котором вы сейчас работаете.

Теперь используйте команду docker node update с флагом --availability pause и идентификатором узла, чтобы изменить доступность узла. Замените <node_id> на фактический идентификатор вашего узла.

docker node update --availability pause <node_id>

После выполнения команды вы можете проверить изменения, снова запустив docker node ls. Теперь доступность вашего узла должна быть pause.

docker node ls

Добавление метки (label) к узлу

На этом шаге мы научимся добавлять метку (label) к узлу в кластере Docker Swarm. Метки представляют собой пары "ключ-значение", которые можно прикрепить к узлам. Они полезны для организации и выбора узлов на основе определенных критериев, которые могут быть использованы для ограничений при размещении задач.

Мы добавим метку с именем env и значением dev к текущему узлу. Сначала убедитесь, что у вас есть идентификатор узла из предыдущего шага. Если нет, вы можете получить его снова, используя команду docker node ls.

docker node ls

Теперь используйте команду docker node update с флагом --label-add, меткой в формате ключ=значение и идентификатором узла. Замените <node_id> на фактический идентификатор вашего узла.

docker node update --label-add env=dev <node_id>

После добавления метки вы можете проверить узел, чтобы увидеть добавленную метку. Используйте команду docker node inspect, за которой следует идентификатор узла.

docker node inspect <node_id>

Найдите раздел Labels в выводе. Вы должны увидеть метку env: dev в этом разделе.

Добавление нескольких меток (labels) к узлу

На этом шаге мы научимся добавлять несколько меток (labels) к узлу одновременно. Вы можете добавить несколько меток, повторяя флаг --label-add для каждой метки, которую вы хотите добавить.

Мы добавим две новые метки к текущему узлу: tier со значением frontend и region со значением us-east. Убедитесь, что у вас есть идентификатор узла из предыдущих шагов.

Используйте команду docker node update с несколькими флагами --label-add и идентификатором узла. Замените <node_id> на фактический идентификатор вашего узла.

docker node update --label-add tier=frontend --label-add region=us-east <node_id>

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

docker node inspect <node_id>

В разделе Labels вывода вы должны увидеть env: dev, tier: frontend и region: us-east.

Удаление метки (label) с узла

На этом шаге мы научимся удалять метку (label) с узла в кластере Docker Swarm. Вы можете удалить метку, используя команду docker node update с флагом --label-rm, за которым следует ключ метки.

Мы удалим метку region, которую добавили на предыдущем шаге. Убедитесь, что у вас есть идентификатор узла.

Используйте команду docker node update с флагом --label-rm и ключом метки (region), за которым следует идентификатор узла. Замените <node_id> на фактический идентификатор вашего узла.

docker node update --label-rm region <node_id>

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

docker node inspect <node_id>

В разделе Labels вывода вы должны увидеть env: dev и tier: frontend, но метка region: us-east должна отсутствовать.

Обновление роли узла до менеджера (manager)

На этом шаге мы научимся обновлять роль узла в кластере Docker Swarm. Узел может иметь одну из двух ролей: manager (менеджер) или worker (рабочий узел). Узлы-менеджеры (manager nodes) обрабатывают задачи управления кластером, в то время как рабочие узлы (worker nodes) запускают сервисы.

Мы повысим текущий узел до роли менеджера (manager). Убедитесь, что у вас есть идентификатор узла.

Используйте команду docker node update с флагом --role manager и идентификатором узла. Замените <node_id> на фактический идентификатор вашего узла.

docker node update --role manager <node_id>

После обновления роли проверьте изменения, выведя список узлов.

docker node ls

В выводе теперь должна быть указана роль вашего узла как Manager.

Резюме

В этом практическом занятии (lab) мы научились управлять узлами Docker Swarm с помощью команды docker node update. Мы рассмотрели несколько ключевых операций, в том числе обновление доступности (availability) узла до состояния pause, чтобы предотвратить получение им новых задач, при этом разрешая существующим задачам продолжать работу.

Кроме того, мы изучили, как добавлять и удалять метки (labels) с узлов. Мы научились добавлять одну метку с использованием --label-add key=value и несколько меток одновременно. Мы также практиковали удаление определенной метки с помощью --label-rm key. Наконец, мы показали, как изменить роль узла на manager, подчеркнув гибкость команды docker node update в управлении состоянием и конфигурацией узлов в кластере Docker Swarm.