더북(TheBook)

5. set image 명령으로 파드의 nginx 컨테이너 버전을 1.16.0으로 업데이트합니다. 이번에도 --record를 명령에 포함해 실행한 명령을 기록합니다.

[root@m-k8s ~]# kubectl set image deployment rollout-nginx nginx=nginx:1.16.0 --record
deployment.apps/rollout-nginx image updated

6. 업데이트한 후에 파드의 상태를 확인합니다.

[root@m-k8s ~]# kubectl get pods \
-o=custom-columns=NAME:.metadata.name,IP:.status.podIP,STATUS:.status.phase,NODE:.spec.nodeName
NAME                             IP               STATUS    NODE
rollout-nginx-7598b44f45-cp9kk   172.16.132.10    Running   w3-k8s
rollout-nginx-7598b44f45-nscgk   172.16.103.144   Running   w2-k8s
rollout-nginx-7598b44f45-w6swb   172.16.221.142   Running   w1-k8s

결과를 보니 파드들의 이름과 IP가 변경됐습니다. 왜 이런 현상이 발생했을까요?

여러 번 언급했듯이 파드는 언제라도 지우고 다시 만들 수 있습니다. 따라서 파드에 속한 nginx 컨테이너를 업데이트하는 가장 쉬운 방법은 파드를 관리하는 replicas의 수를 줄이고 늘려 파드를 새로 생성하는 것입니다. 이때 시스템의 영향을 최소화하기 위해 replicas에 속한 파드를 모두 한 번에 지우는 것이 아니라 파드를 하나씩 순차적으로 지우고 생성합니다. 이때 파드 수가 많으면 하나씩이 아니라 다수의 파드가 업데이트됩니다. 업데이트 기본값은 전체의 1/4(25%)개이며, 최솟값은 1개입니다.

▲ 그림 3-32 rollout으로 파드 업데이트 시 구성 변화

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.