Como usar o comando docker node demote para rebaixar um manager do swarm

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos como gerenciar os papéis dos nós dentro de um Docker Swarm. Especificamente, focaremos no uso do comando docker node demote para alterar o papel de um nó manager para o de um worker.

O laboratório irá guiá-lo através do processo de inicialização de um Docker Swarm, identificação dos nós manager atuais, execução do comando de demotion e, finalmente, verificação do papel atualizado do nó para confirmar a demotion bem-sucedida. Esta experiência prática fornecerá conhecimento prático sobre o gerenciamento de nós do Docker Swarm.

Inicializar um Docker Swarm

Nesta etapa, inicializaremos um Docker Swarm. Um Docker Swarm é um grupo de máquinas executando Docker e unidas em um cluster. Após ingressar em um Swarm, você pode continuar a executar os comandos Docker aos quais está acostumado, mas eles agora são executados por um manager do Swarm. As máquinas em um Swarm podem ser managers ou workers. Os managers lidam com as tarefas de gerenciamento do cluster, enquanto os workers executam os serviços.

Antes de inicializar o swarm, vamos verificar a versão atual do Docker.

docker version

Você deve ver uma saída semelhante a esta, indicando a versão do Docker instalada na VM do LabEx:

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.20
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.20
  Git commit:       363bd3c
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2b3d85c5e9b15588d67616e19a2a3a495d
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Agora, vamos inicializar o Docker Swarm nesta máquina. Como este é o primeiro nó no swarm, ele se tornará automaticamente um nó manager. Usaremos o comando docker swarm init.

docker swarm init

Você deve ver uma saída indicando que o swarm foi inicializado e fornecendo um comando para ingressar em outros nós como workers. A saída será semelhante a esta:

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

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

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

A saída confirma que o swarm foi inicializado e o nó atual é um manager. O xxxxxxxxxxxx será substituído pelo ID real do nó.

Listar nós do swarm para identificar managers

Nesta etapa, listaremos os nós no Docker Swarm para identificar quais nós são managers e quais são workers. Como acabamos de inicializar o swarm com um único nó, esperamos ver apenas um nó listado, e seu papel deve ser "Manager".

Para listar os nós no swarm, usamos o comando docker node ls.

docker node ls

Você deve ver uma saída semelhante a esta:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx *                labex-vm            Ready     Active         Leader           20.10.21

Vamos detalhar a saída:

  • ID: O ID único do nó. O asterisco (*) ao lado do ID indica o nó atual no qual você está executando o comando.
  • HOSTNAME: O nome do host do nó. Neste caso, é labex-vm.
  • STATUS: O status do nó. Ready significa que o nó está saudável e pronto para aceitar tarefas.
  • AVAILABILITY: Indica se o nó está disponível para agendar tarefas. Active significa que está disponível.
  • MANAGER STATUS: Mostra o papel do nó no swarm. Leader indica que este nó é o manager primário no swarm. Se houvesse outros managers, eles mostrariam Reachable. Os nós worker teriam este campo vazio.
  • ENGINE VERSION: A versão do Docker Engine em execução no nó.

Como esperado, vemos nosso único nó listado, e seu MANAGER STATUS é Leader, confirmando que é um nó manager.

Rebaixar um nó manager

Nesta etapa, rebaixaremos o nó manager atual para um nó worker. Rebaixar um nó manager significa mudar seu papel de gerenciar o swarm para simplesmente executar tarefas como um worker. Isso é útil em cenários onde você precisa reduzir o número de managers ou alterar o papel de um nó específico.

Para rebaixar um nó manager, usamos o comando docker node demote seguido pelo ID do nó ou hostname. Da etapa anterior, sabemos que o hostname é labex-vm.

docker node demote labex-vm

Você deve ver uma saída confirmando o rebaixamento:

Node labex-vm was demoted from a manager to a worker.

Esta saída indica que o nó labex-vm foi rebaixado com sucesso de um manager para um papel de worker dentro do swarm.

Verificar a função do nó após o rebaixamento

Nesta etapa final, verificaremos se o papel do nó foi alterado com sucesso de manager para worker após a operação de rebaixamento. Usaremos novamente o comando docker node ls para listar os nós no swarm e verificar a coluna MANAGER STATUS para o nosso nó.

docker node ls

Após executar o comando, você deve ver uma saída semelhante a esta:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active                          20.10.21

Observe que a coluna MANAGER STATUS para o nó labex-vm agora está vazia. Isso indica que o nó não é mais um manager e agora está atuando como um nó worker no swarm. O asterisco (*) ainda está ao lado do ID porque este é o nó onde você está executando o comando, mas seu papel foi alterado.

Isso confirma que o rebaixamento foi bem-sucedido.

Resumo

Neste laboratório, aprendemos como gerenciar nós do Docker Swarm inicializando um swarm e identificando nós manager. Em seguida, praticamos o uso do comando docker node demote para alterar o papel de um nó manager para um worker. Finalmente, verificamos o rebaixamento bem-sucedido listando os nós do swarm e observando o papel atualizado.