docker node demote 명령어를 사용하여 Swarm 매니저 강등 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker Swarm 내 노드의 역할을 관리하는 방법을 살펴봅니다. 특히, docker node demote 명령을 사용하여 매니저 노드의 역할을 워커로 변경하는 데 중점을 둡니다.

이 랩에서는 Docker Swarm 을 초기화하고, 현재 매니저 노드를 식별하며, 강등 명령을 실행하고, 마지막으로 노드의 업데이트된 역할을 확인하여 성공적인 강등을 확인하는 과정을 안내합니다. 이 실습 경험은 Docker Swarm 노드 관리에 대한 실질적인 지식을 제공할 것입니다.

Docker Swarm 초기화

이 단계에서는 Docker Swarm 을 초기화합니다. Docker Swarm 은 Docker 를 실행하고 클러스터에 가입된 머신 그룹입니다. Swarm 에 가입한 후에는 익숙한 Docker 명령을 계속 실행할 수 있지만, 이제 Swarm 매니저에 의해 실행됩니다. Swarm 의 머신은 매니저 또는 워커가 될 수 있습니다. 매니저는 클러스터 관리 작업을 처리하고, 워커는 서비스를 실행합니다.

Swarm 을 초기화하기 전에 현재 Docker 버전을 확인해 보겠습니다.

docker version

LabEx VM 에 설치된 Docker 버전을 나타내는 다음과 유사한 출력을 볼 수 있습니다.

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

이제 이 머신에서 Docker Swarm 을 초기화해 보겠습니다. 이것이 Swarm 의 첫 번째 노드이므로 자동으로 매니저 노드가 됩니다. docker swarm init 명령을 사용합니다.

docker swarm init

Swarm 이 초기화되었음을 나타내고 다른 노드를 워커로 가입시키는 명령을 제공하는 출력을 볼 수 있습니다. 출력은 다음과 유사합니다.

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.

출력은 Swarm 이 초기화되었고 현재 노드가 매니저임을 확인합니다. xxxxxxxxxxxx는 실제 노드 ID 로 대체됩니다.

Swarm 노드 목록을 확인하여 매니저 식별

이 단계에서는 Docker Swarm 의 노드를 나열하여 어떤 노드가 매니저이고 어떤 노드가 워커인지 식별합니다. 방금 단일 노드로 Swarm 을 초기화했으므로 하나의 노드만 나열될 것으로 예상되며, 해당 역할은 "Manager"여야 합니다.

Swarm 의 노드를 나열하려면 docker node ls 명령을 사용합니다.

docker node ls

다음과 유사한 출력을 볼 수 있습니다.

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

출력을 자세히 살펴보겠습니다.

  • ID: 노드의 고유 ID 입니다. ID 옆의 별표 (*) 는 명령을 실행 중인 현재 노드를 나타냅니다.
  • HOSTNAME: 노드의 호스트 이름입니다. 이 경우 labex-vm입니다.
  • STATUS: 노드의 상태입니다. Ready는 노드가 정상이며 작업을 수락할 준비가 되었음을 의미합니다.
  • AVAILABILITY: 노드가 작업을 예약할 수 있는지 여부를 나타냅니다. Active는 사용 가능함을 의미합니다.
  • MANAGER STATUS: Swarm 에서 노드의 역할을 보여줍니다. Leader는 이 노드가 Swarm 의 기본 매니저임을 나타냅니다. 다른 매니저가 있는 경우 Reachable로 표시됩니다. 워커 노드는 이 필드가 비어 있습니다.
  • ENGINE VERSION: 노드에서 실행 중인 Docker Engine 의 버전입니다.

예상대로 단일 노드가 나열되고 MANAGER STATUSLeader이므로 매니저 노드임을 확인합니다.

매니저 노드 강등

이 단계에서는 현재 매니저 노드를 워커 노드로 강등합니다. 매니저 노드를 강등한다는 것은 Swarm 을 관리하는 역할에서 단순히 워커로 작업을 실행하는 역할로 변경하는 것을 의미합니다. 이는 매니저 수를 줄이거나 특정 노드의 역할을 변경해야 하는 시나리오에서 유용합니다.

매니저 노드를 강등하려면 docker node demote 명령을 사용하고 그 뒤에 노드 ID 또는 호스트 이름을 입력합니다. 이전 단계에서 호스트 이름이 labex-vm임을 알고 있습니다.

docker node demote labex-vm

강등을 확인하는 출력을 볼 수 있습니다.

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

이 출력은 노드 labex-vm이 Swarm 내에서 매니저에서 워커 역할로 성공적으로 강등되었음을 나타냅니다.

강등 후 노드 역할 확인

이 마지막 단계에서는 강등 작업 후 노드의 역할이 매니저에서 워커로 성공적으로 변경되었는지 확인합니다. 다시 docker node ls 명령을 사용하여 Swarm 의 노드를 나열하고 노드의 MANAGER STATUS 열을 확인합니다.

docker node ls

명령을 실행한 후 다음과 유사한 출력을 볼 수 있습니다.

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

labex-vm 노드의 MANAGER STATUS 열이 이제 비어 있는 것을 확인하십시오. 이는 노드가 더 이상 매니저가 아니며 이제 Swarm 에서 워커 노드로 작동하고 있음을 나타냅니다. 별표 (*) 는 여전히 ID 옆에 있는데, 이는 명령을 실행 중인 노드이지만 역할이 변경되었기 때문입니다.

이는 강등이 성공했음을 확인합니다.

요약

이 랩에서는 Swarm 을 초기화하고 매니저 노드를 식별하여 Docker Swarm 노드를 관리하는 방법을 배웠습니다. 그런 다음 docker node demote 명령을 사용하여 매니저 노드의 역할을 워커로 변경하는 연습을 했습니다. 마지막으로, Swarm 노드를 나열하고 업데이트된 역할을 관찰하여 성공적인 강등을 확인했습니다.