티스토리 뷰

스웜 모드는 롤링 업데이트를 자체적으로 지원하며, 매우 간단하게 사용할 수 있다. 롤링 업데이트를 테스트하기 위한 서비스를 먼저 생성해 보자. 컨테이너 생성에 사용될 이미지는 nginx 1.10으로 설정했다.

docker service create --name myweb2 \
--replicas 3 \
nginx:1.10

docker service update 명령어를 사용하면 생성된 서비스의 각종 설정을 변경할 수 있는데, 이미지를 업데이트하려면 update 명령어의 --image 옵션을 설정하면 된다. 아래의 명령어는 위에서 생성한 myweb2 서비스의 이미지를 nginx:1.11로 업데이트하는 명령어이다.

docker service update \
--image nginx:1.11 \
myweb2

그리고 서비스 내의 컨테이너 목록을 확인하면 각 컨테이너의 이미지가 변경된 것을 알 수 있다.

출력 결과 중 NAME 항목이 \_myweb2.1인 컨테이너가 롤링 업데이트의 대상이 되어 삭제된 컨테이너이고, \_가 붙지 않은 컨테이너가 롤링 업데이트로 새롭게 생성된 컨테이너이다.

서비스를 생성할 때, 롤링 업데이트의 주기, 업데이트를 동시에 진행할 컨테이너의 개수, 업데이트에 실패했을 때 어떻게 할 것인지를 설정할 수 있다. 다음의 예는 각 컨테이너 레플리카를 10초 단위로 업데이트하며 업데이트 작업을 한 번에 2개의 컨테이너에 수행한다는 것을 의미한다. 만약 이를 설정하지 않으면 주기 없이 차례대로 컨테이너를 한 개씩 업데이트한다.

docker service create \
--replicas 4 \
--name myweb3 \
--update-delay 10s \
--update-parallelism 2 \
nginx:1.10

이렇게 설정한 서비스의 롤링 업데이트 설정은 docker service inspect 또는 docker inspect --type service 명령어로 확인할 수 있다.

docker service inspect --pretty myweb3

위 출력 결과 중 On failure 항목이 pause로 설정되어 있는 것을 볼 수 있는데, 이는 업데이트 도중 오류가 발생하면 롤링 업데이트를 중지하는 것을 의미하는 설정이다. 업데이트 실패에 대해 아무런 설정도 하지 않으면, On failure 항목은 pause로 설정되지만 서비스를 생성할 때 --update-failure-action 인자의 값을 continue로 지정해 업데이트 도중 오류가 발생해도 계속 롤링 업데이트를 진행하게 할 수 있다.

docker service create --name myweb4 \
--replicas 4 \
--update-failure-action continue \
nginx:1.10

Ref : 시작하세요! 도커/쿠버네티스

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함