0부터 시작하는 Docker Swarm 공부 - label

Jaehong Lee·2022년 8월 25일
1
post-thumbnail

1. label 과 Node

  • label 은 기존의 node.role 과 비슷하게 Node 에 key:value 형식의 label 을 부착하고, 이를 기반으로 컨테이너를 배치하고자 할 때 활용된다

Node 를 구분하는 방법

  1. node.role
  2. node.id
  3. node.hostname
  • 위 3 가지를 이용해 Node 를 구분할 수 있다. role 은 다수의 Node 를 한 번에 지정할 수 있지만, id 와 hostname 같은 경우에는 Node 하나 하나 따로 지정해야 한다
  • 아래와 같이 구성해보자
    • worker1 - zone-a - company: abc
    • worker2 - zone-b - company: abc
    • worker3 - zone-c - company: X

2. label 추가하기

docker node update --label-add zone=a --label-add company:abc worker1

  • worker1 Node 에 label 을 추가하자. --label-add 를 통해 label 을 추가할 수 있다
  • label 이 잘 설정되었다

label 설정시 key=value 형태로 써야 한다. company:abc 로 작성하면, = 가 아니므로 하나의 key 로 인식한다

  • 다른 Node 들에도 label 을 추가해주자

label add 시 이미 존재하는 key 에 대해 value 를 add 하면, key 의 value 가 변경된다

3. label 을 이용해 배포하기

docker service create --name zone --mode global --constraint 'node.labels.zone == c' nginx
  • label 에서 zone 이 c 인 Node 에게만 컨테이너를 배포해보자
  • zone 이 c 인 worker 3 에만 컨테이너가 배치된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글