Как использовать команду docker node ls для вывода списка узлов в кластере Docker Swarm

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker node ls для управления и проверки узлов в кластере Docker 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/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555182{{"Как использовать команду docker node ls для вывода списка узлов в кластере Docker Swarm"}} docker/ps -.-> lab-555182{{"Как использовать команду docker node ls для вывода списка узлов в кластере Docker Swarm"}} docker/inspect -.-> lab-555182{{"Как использовать команду docker node ls для вывода списка узлов в кластере Docker Swarm"}} end

Вывод списка всех узлов в кластере

На этом этапе мы научимся выводить список всех узлов в кластере Docker Swarm. Прежде чем выводить список узлов, нам нужно инициализировать кластер Docker Swarm.

Сначала инициализируем кластер на текущем компьютере. Этот компьютер станет узлом-менеджером.

docker swarm init

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

Теперь, когда кластер инициализирован, мы можем вывести список узлов в кластере с помощью команды docker node ls.

docker node ls

Эта команда отобразит таблицу с информацией о узлах в кластере, включая их идентификатор, имя узла, статус, доступность, статус менеджера и версию Docker Engine. Поскольку у нас есть только один узел (узел-менеджер, который мы только что инициализировали), вы увидите одну запись в списке.

Вывод будет выглядеть примерно так:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

Знак * рядом с идентификатором указывает, что это текущий узел, на котором вы запускаете команду. Столбец MANAGER STATUS показывает, что этот узел является Leader (лидером) кластера.

Фильтрация узлов по идентификатору

На этом этапе мы научимся фильтровать список узлов в кластере Docker Swarm на основе их идентификаторов. Это полезно, когда у вас много узлов и вы хотите посмотреть информацию о конкретном узле.

Сначала выведем список всех узлов еще раз, чтобы получить идентификатор узла-менеджера.

docker node ls

Определите ID узла из вывода. Это будет длинная строка символов.

Теперь мы можем использовать флаг --filter с ключом id для фильтрации вывода и отображения только узла с указанным идентификатором. Замените <node_id> на фактический идентификатор, полученный из предыдущей команды.

docker node ls --filter id=<node_id>

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

Например, если идентификатор вашего узла 24ifihg345h345h345h345h34, команда будет выглядеть так:

docker node ls --filter id=24ifihg345h345h345h345h34

Вывод будет таким же, как одна строка для вашего узла-менеджера из команды docker node ls на предыдущем этапе.

Фильтрация узлов по роли

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

Поскольку в нашем кластере в настоящее время есть только один узел, и это узел-менеджер, отфильтруем список, чтобы показать только узлы-менеджеры. Мы используем флаг --filter с ключом role и значением manager.

docker node ls --filter role=manager

Эта команда отобразит только узлы, имеющие роль manager. В нашей текущей настройке это будет тот же единственный узел, как и раньше.

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

docker node ls --filter role=worker

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

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

Фильтрация узлов по меткам узлов

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

Сначала добавим метку нашему узлу-менеджеру. Мы добавим метку location=datacenter1. Для этого используем команду docker node update, за которой следует идентификатор узла и флаг --label-add.

Получим идентификатор узла снова с помощью команды docker node ls -q:

NODE_ID=$(docker node ls -q)
echo $NODE_ID

Теперь обновим узел, добавив метку:

docker node update --label-add location=datacenter1 $NODE_ID

Вы должны увидеть вывод, подтверждающий обновление узла.

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

docker node inspect $NODE_ID

Найдите раздел Labels в выводе. Вы должны увидеть "location": "datacenter1".

Теперь отфильтруем узлы на основе этой метки. Мы используем флаг --filter с ключом label и меткой в формате key=value.

docker node ls --filter label=location=datacenter1

Эта команда отобразит только те узлы, которые имеют метку location со значением datacenter1. В нашем случае это будет наш узел-менеджер.

Вы также можете отфильтровать узлы, имеющие определенный ключ метки, независимо от его значения, указав только ключ:

docker node ls --filter label=location

Это покажет все узлы, для которых определена метка location.

Форматирование вывода для отображения определенной информации

На этом этапе мы научимся форматировать вывод команды docker node ls так, чтобы отображались только те данные, которые нас интересуют. Это полезно при написании скриптов или когда вам нужно быстро получить информацию о конкретных деталях.

Для указания формата вывода мы используем флаг --format. Вы можете использовать синтаксис шаблонов Go для определения желаемого формата вывода. Среди общих полей, к которым можно получить доступ, есть .ID, .Hostname, .Status, .Availability, .ManagerStatus и .EngineVersion.

Покажем только идентификатор узла и его имя хоста.

docker node ls --format "{{.ID}}\t{{.Hostname}}"

{{.ID}} и {{.Hostname}} являются заполнителями для идентификатора узла и его имени хоста соответственно. Символ \t вставляет табуляцию для разделения полей.

Вывод будет выглядеть следующим образом:

<node_id>	<hostname>

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

docker node ls --format "Hostname: {{.Hostname}}, Manager Status: {{.ManagerStatus}}"

В таком случае вывод будет:

Hostname: <hostname>, Manager Status: Leader

Вы можете комбинировать фильтрацию и форматирование. Например, отфильтруем узлы-менеджеры и выведем их идентификаторы и имена хостов.

docker node ls --filter role=manager --format "{{.ID}}\t{{.Hostname}}"

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

Использование флага --format позволяет гибко настраивать просмотр и обработку информации о узлах Docker Swarm.

Резюме

В этом практическом занятии мы научились использовать команду docker node ls для управления и просмотра информации о узлах в кластере Docker Swarm. Мы начали с инициализации кластера Docker Swarm на текущем компьютере, сделав его узлом-менеджером. Затем мы использовали команду docker node ls для вывода списка всех узлов в кластере, изучив стандартный вывод, который включает идентификатор, имя хоста, статус, доступность, статус менеджера и версию Docker Engine.

Затем мы изучили, как фильтровать список узлов с помощью флага --filter. В частности, мы научились фильтровать узлы по их уникальному идентификатору, что позволяет быстро найти и просмотреть информацию о конкретном узле в большом кластере. В рамках практического занятия также рассматривается фильтрация по роли и метке узла, а также форматирование вывода для отображения только определенной информации, хотя в предоставленном материале подробно описана только фильтрация по идентификатору.