본문 바로가기

Micro Service Architecture/Docker

13. [docker] 특정 node에 서비스 task 할당

반응형

1. 특정노드로의 task 할당

  • 운영자의 특별한 설정이 없다면 서비스 task는 클러스터내 node에 자동 분배된다.
  • 특정 서비스를 특정 노드에 할당 하기 위해 label type 지정을 설정할 수 있다.
## nginx_test2라는 서비스는 nginx:latest 이미지로 docker1,2에 task가 할당되어져 있다.
## nginx_test3라는 서비스를 nginx:1.13 이미지로 docker3에만 할당 한다.
 
 
## node type 지정(nginx-1.13)
[root@docker1 bin]# docker node update --label-add type=nginx-1.13 docker3
docker3
 
 
## docker3의 node inspect
[root@docker1 bin]# docker node inspect --pretty docker3
ID:         miuah480u64gb1ppxzuiullun
Labels:
 - type = nginx-1.13
Hostname:       docker3
Joined at:      2020-07-30 09:43:50.160526971 +0000 utc
...
 
 
 
## 서비스 생성 : node label type이 nginx-1.13인 node에 3개의 task를 생성
[root@docker1 bin]# docker service create --name nginx_test3 -p 90:80 --constraint "node.labels.type == nginx-1.13" --replicas 3 nginx:1.13
ka17alpdo69iucy55t88nrmid
 
 
## 서비스 프로세스를 확인하면 docker3에만 task가 할당 된것을 볼 수 있다.
[root@docker1 bin]# docker service ps nginx_test3
ID            NAME           IMAGE       NODE     DESIRED STATE  CURRENT STATE          ERROR  PORTS
58ryul7q05r5  nginx_test3.1  nginx:1.13  docker3  Running        Running 2 seconds ago        
dyq8am3gqph7  nginx_test3.2  nginx:1.13  docker3  Running        Running 2 seconds ago        
p06ixu8y0mly  nginx_test3.3  nginx:1.13  docker3  Running        Running 2 seconds ago
반응형