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으로 파드 업데이트 시 구성 변화