반응형
- 운영중인 Docker Host나 Docker데몬에 유지보수를 위한 점검을 진행 할 경우 속해있는 task를 다른node로 이전 작업 후 진행 해야한다.
- 점검 대상 노드를 drain 상태로 변경 후 원복하는 작업을 진행한다.
## nginx_test2라는 서비스에 아래와 같이 task가 3개의 node에 할당 되어져있다.
[root@docker1 bin]# docker service ps nginx_test2
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
rtl4atm0aeey nginx_test2.1 nginx:latest docker1 Running Running 29 seconds ago
u2epfwd3ygea nginx_test2.2 nginx:latest docker2 Running Running 1 second ago
omb1m7sssjnn nginx_test2.3 nginx:latest docker3 Running Running 1 second ago
[root@docker1 bin]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 * docker1 Ready Active Leader
miuah480u64gb1ppxzuiullun docker3 Ready Active Reachable
uh0oje50u4ye5wefng70g2b9d docker2 Ready Active Reachable
## 점검 대상은 docker3을 drain상태로 변경
[root@docker1 bin]# docker node update --availability drain docker3
docker3
## docker3이 drain 상태로 변경 되었다.
## worker 로서의 기능이며 manager로서는 아직 동작 중이다.
[root@docker1 bin]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 * docker1 Ready Active Leader
miuah480u64gb1ppxzuiullun docker3 Ready Drain Reachable
uh0oje50u4ye5wefng70g2b9d docker2 Ready Active Reachable
## drain상태가 되면 가지고 있는 task는 다른 node로 이전된다.
## 또한 Overlay Network도 정상 동작 한다.
[root@docker1 bin]# docker service ps nginx_test2
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
rtl4atm0aeey nginx_test2.1 nginx:latest docker1 Running Running 5 minutes ago
u2epfwd3ygea nginx_test2.2 nginx:latest docker2 Running Running 4 minutes ago
o5eovusbby93 nginx_test2.3 nginx:latest docker1 Running Running 10 seconds ago
omb1m7sssjnn \_ nginx_test2.3 nginx:latest docker3 Shutdown Shutdown 10 seconds ago
- 원복
## docker3을 다시 active 상태로 돌린다.
[root@docker1 bin]# docker node update --availability active docker3
docker3
## docker3이 active상태로 변경되었다.
[root@docker1 bin]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 * docker1 Ready Active Leader
miuah480u64gb1ppxzuiullun docker3 Ready Active Reachable
uh0oje50u4ye5wefng70g2b9d docker2 Ready Active Reachable
## task를 확인해보면 nginx_test2.3 task가 docker3 node가 원복 되었다고 다시 docker3으로 task 재배분 하지는 않는다.
[root@docker1 bin]# docker service ps nginx_test2
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
rtl4atm0aeey nginx_test2.1 nginx:latest docker1 Running Running 10 minutes ago
u2epfwd3ygea nginx_test2.2 nginx:latest docker2 Running Running 10 minutes ago
o5eovusbby93 nginx_test2.3 nginx:latest docker1 Running Running 5 minutes ago
omb1m7sssjnn \_ nginx_test2.3 nginx:latest docker3 Shutdown Shutdown about a minute ago
- 참고 : pause는 기존 task는 유지하고 신규 task 할당은 하지 않게 됨
--availability <active|drain|pause>
반응형
'Micro Service Architecture > Docker' 카테고리의 다른 글
14. [docker] Service로 CentOS, Ubuntu 등의 Base OS를 실행할때 오류 (0) | 2021.03.16 |
---|---|
13. [docker] 특정 node에 서비스 task 할당 (0) | 2021.03.16 |
11. [docker] docker 명령어 모음 (0) | 2021.03.16 |
9. [docker] Update(Rolling) & Rollback (0) | 2021.03.16 |
8. [docker] swarm : service create (0) | 2021.03.16 |