소개
이 랩에서는 docker node update 명령어를 사용하여 Docker Swarm 노드를 관리하는 방법을 배우게 됩니다. 이 명령의 다양한 기능을 탐구할 것이며, 여기에는 작업 배치를 제어하기 위한 노드 가용성 업데이트, 작업 스케줄링 제약 조건을 위해 노드를 분류하기 위한 레이블 추가 및 제거, 그리고 스웜 내에서 노드의 역할을 변경하는 것이 포함됩니다.
실습을 통해 새로운 작업을 방지하기 위해 노드를 일시 중지하고, 노드에 단일 및 다중 레이블을 추가하고, 기존 레이블을 제거하며, 워커 노드를 매니저 역할로 승격하는 연습을 할 것입니다. 이러한 단계는 Docker Swarm 클러스터에서 노드의 상태와 속성을 관리하는 실질적인 경험을 제공할 것입니다.
노드 가용성을 일시 중지 (pause) 로 업데이트
이 단계에서는 Docker Swarm 에서 노드의 가용성을 업데이트하는 방법을 배우겠습니다. 노드 가용성은 노드가 새로운 작업을 수신할 수 있는지 여부를 결정합니다. 가능한 가용성 상태는 active, pause, 그리고 drain입니다.
active: 노드는 새로운 작업을 수신할 수 있습니다. 이것이 기본 상태입니다.pause: 노드는 새로운 작업을 수신하지 않지만, 기존 작업은 계속 실행됩니다.drain: 노드는 새로운 작업을 수신하지 않으며, 기존 작업은 중지되고 다른 노드에서 다시 예약됩니다.
현재 노드의 가용성을 pause로 변경할 것입니다. 먼저, 현재 노드의 ID 를 찾아야 합니다. docker node ls 명령어를 사용하여 스웜의 노드를 나열할 수 있습니다.
docker node ls
출력에는 ID, 호스트 이름, 상태, 가용성 및 매니저 상태를 포함한 노드 목록이 표시됩니다. 현재 작업 중인 노드의 ID 를 식별합니다.
이제 --availability pause 플래그와 노드 ID 를 사용하여 docker node update 명령어를 사용하여 노드의 가용성을 변경합니다. <node_id>를 실제 노드의 ID 로 바꿉니다.
docker node update --availability pause <node_id>
명령을 실행한 후, docker node ls를 다시 실행하여 변경 사항을 확인할 수 있습니다. 이제 노드의 가용성이 pause로 표시되어야 합니다.
docker node ls
노드에 레이블 추가
이 단계에서는 Docker Swarm 에서 노드에 레이블을 추가하는 방법을 배우겠습니다. 레이블은 노드에 연결할 수 있는 키 - 값 쌍입니다. 특정 기준에 따라 노드를 구성하고 선택하는 데 유용하며, 작업 배치 제약 조건에 사용할 수 있습니다.
현재 노드에 env라는 이름의 레이블을 값 dev로 추가할 것입니다. 먼저, 이전 단계에서 노드 ID 를 가지고 있는지 확인합니다. 그렇지 않은 경우, docker node ls를 사용하여 다시 얻을 수 있습니다.
docker node ls
이제 --label-add 플래그, key=value 형식의 레이블, 그리고 노드 ID 를 사용하여 docker node update 명령어를 사용합니다. <node_id>를 실제 노드의 ID 로 바꿉니다.
docker node update --label-add env=dev <node_id>
레이블을 추가한 후, 노드를 검사하여 추가된 레이블을 확인할 수 있습니다. docker node inspect 명령어를 노드 ID 와 함께 사용합니다.
docker node inspect <node_id>
출력에서 Labels 섹션을 찾습니다. env: dev 레이블이 거기에 나열되어 있는지 확인해야 합니다.
노드에 여러 레이블 추가
이 단계에서는 노드에 여러 레이블을 동시에 추가하는 방법을 배우겠습니다. 추가하려는 각 레이블에 대해 --label-add 플래그를 반복하여 여러 레이블을 추가할 수 있습니다.
현재 노드에 tier 레이블을 값 frontend로, region 레이블을 값 us-east로 두 개의 새로운 레이블을 추가할 것입니다. 이전 단계에서 노드 ID 를 가지고 있는지 확인합니다.
여러 --label-add 플래그와 노드 ID 를 사용하여 docker node update 명령어를 사용합니다. <node_id>를 실제 노드의 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를 볼 수 있어야 합니다.
노드에서 레이블 제거
이 단계에서는 Docker Swarm 에서 노드에서 레이블을 제거하는 방법을 배우겠습니다. --label-rm 플래그와 레이블 키를 사용하여 docker node update 명령어를 사용하여 레이블을 제거할 수 있습니다.
이전 단계에서 추가한 region 레이블을 제거할 것입니다. 노드 ID 를 가지고 있는지 확인합니다.
--label-rm 플래그와 레이블 키 (region) 를 사용하고, 그 뒤에 노드 ID 를 사용하여 docker node update 명령어를 사용합니다. <node_id>를 실제 노드의 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의 두 가지 역할 중 하나를 가질 수 있습니다. 매니저 노드는 스웜 관리 작업을 처리하고, 워커 노드는 서비스를 실행합니다.
현재 노드를 매니저 역할로 승격시킬 것입니다. 노드 ID 를 가지고 있는지 확인합니다.
--role manager 플래그와 노드 ID 를 사용하여 docker node update 명령어를 사용합니다. <node_id>를 실제 노드의 ID 로 바꿉니다.
docker node update --role manager <node_id>
역할을 업데이트한 후, 노드를 나열하여 변경 사항을 확인합니다.
docker node ls
출력은 이제 노드의 역할을 Manager로 표시해야 합니다.
요약
이 랩에서는 docker node update 명령어를 사용하여 Docker Swarm 노드를 관리하는 방법을 배웠습니다. 기존 작업이 계속 실행되도록 허용하면서 새로운 작업을 받지 않도록 노드의 가용성을 pause로 업데이트하는 것을 포함하여 몇 가지 주요 작업을 다루었습니다.
또한 노드에서 레이블을 추가하고 제거하는 방법을 살펴보았습니다. --label-add key=value를 사용하여 단일 레이블을 추가하고 여러 레이블을 동시에 추가하는 방법을 배웠습니다. 또한 --label-rm key를 사용하여 특정 레이블을 제거하는 연습을 했습니다. 마지막으로, 노드의 역할을 manager로 변경하는 방법을 시연하여 Docker Swarm 내에서 노드의 상태 및 구성을 관리하는 docker node update 명령어의 유연성을 강조했습니다.



