성장일기/Kubernetes

Deployment의 롤링업데이트 전략 이해하기 ( Max Unavailable, Max surge )

지추월자 2023. 12. 5. 17:37
반응형

Deployment는 ReplicaSet을 관리하고, 파드의 롤아웃(업데이트) 및 롤백을 처리하는 더 고급 수준의 리소스인데요. 무중단 업데이트, 버전 관리, 롤백 등의 기능을 제공합니다. 그래서 오늘은 Deployment의 롤링업데이트에 대해서 이해해봅시다.

maxUnavailable

maxUnavailable: 업데이트 과정 중 사용할 수 없게 되는 최대 파드 수를 정의합니다.

25%의 maxUnavailable은 원하는 파드 수(3개)의 25%를 의미합니다. 즉, 3 x 0.25 = 0.75, 내림하여 0개입니다.

그러나 maxUnavailable은 최소 1개 파드를 의미해야 하므로, 실제적으로 사용할 수 없는 최대 파드 수는 1개가 됩니다. 해당 내용은 쿠버네티스 공식 문서에 기재되어있습니다.

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment

maxSurge

maxSurge: 업데이트 과정 중에 추가로 생성할 수 있는 파드의 최대 수를 정의합니다.

예를 들어 maxSurge를 1로 설정한다면, 쿠버네티스는 업데이트 동안 기존 파드 수보다 최대 1개 더 많은 파드를 실행할 수 있습니다. 여기서도 25%로 설정했으니 기존 파드 수보다 최대 1개(3 x 0.25 = 0.75) 더 많은 파드를 실행할 수 있습니다. 

업데이트 과정

maxSurge에 따라, 기존 파드 수보다 최대 1개 더 많은 파드를 생성할 수 있습니다. 이 경우, 최대 4개의 파드(기존 3개 + 추가 1개)를 가질 수 있습니다.

동시에 maxUnavailable 설정에 따라, 최대 1개의 파드를 사용할 수 없게 할 수 있습니다.

이러한 설정은 업데이트 동안 서비스의 가용성을 최대한 유지하면서도, 새 버전의 파드를 점진적으로 도입할 수 있게 해줍니다. 예를 들어, 새로운 파드가 생성되고 준비 상태가 되면, 오래된 파드 중 하나가 종료되어 총 파드 수를 다시 3개로 유지할 수 있습니다. 이 과정은 모든 파드가 새 버전으로 업데이트될 때까지 계속됩니다.

반응형