• [Kubernetes Workloads] 디플로이먼트(Deployment)
    아키텍처 공부/Cloud 2022. 10. 8. 00:48
    반응형

    디플로이먼트와 레플리카셋

     디플로이먼트(Deployment)에 지정된 파드의 특정 버전을 인스턴스화하고 유지하도록 레플리카셋(ReplicaSet)을 구성한다. 레플리카셋(ReplicaSet)은 특정 시간에 특정 수의 파드 복제본이 실행되도록 하는 컨트롤러이다. 디플로이먼트는 상태를 선언하는 파드의 상위 수준 컨트롤러이다. 파드가 실패하거나 축출되면 레플리카셋은 자동으로 새 파드를 실행한다.

     

    오토스케일(AutoScale)

     HPA(HorizontalPodAutoscaler)는 쿠버네티스 오브젝트이다. 해당 오브젝트는 각 파드에서 수집된 메트릭을 분석하여 CPU 사용률을 확인하고, 디플로이먼트 및 디플로이먼트의 레플리카셋의 크기를 조정한다. 즉, 원하는 CPU 사용률과 파드의 최소 및 최대 수를 지정하여 디플로이먼트를 자동 확장할 수 있다. HPA의 스케일 목표 안에 있는 모든 파드에서 주어진 메트릭의 평균으로 계산된다. 예를들어) targetAverageUtilization: 70 이고, 레플리카셋이 3개의 파드로 이루어져 있다면, CPU 사용률이 평균 70%가 증가해야 파드가 오토스케일된다. 각 파드에서 수집된 메트릭으로 사용률을 계산하여 오토스케일링 여부를 판단하고 실행한다.

     

    업데이트 전략

    디플로이먼트에서는 모든 배포를 롤아웃(Rollout)이라 한다.

     

    롤링 업데이트(Rolling Updates)

     기존 버전의 파드와 새로운 파드가 공존하는 기간이 생긴다. maxUnavailable, maxSurge를 사용하여 롤링 업데이트 전략을 지정한다. maxUnavailable는 사용할 수 없는 최대의 파드 수를 의미하며, 롤링 업데이트 중 동시에 삭제할 수 있는 파드의 갯수이다. 값을 높게 설정하면 교체되는 파드의 수도 증가하므로 업데이트 시간이 줄어든다.

     

    블루-그린 배포(Blue-Green Deployments)

     새 배포 파드가 준비되면 트래픽을 이전 파란색 버전에서 새 녹색 버전으로 전환할 수 있다. 기존 버전의 파드와 같은 수의 새로운 파드를 실행한다. 새로운 파드가 정상적으로 실행되면 한꺼번에 트래픽을 옮기는 방식이다. 이 트래픽을 옮기는 방법은 쿠버네티스 오브젝트인 서비스(Service)를 이용한다. 서비스는 레이블 선택기를 기반으로 파드를 선택한다. 즉, 녹색 버전의 파드가 모두 뜨면, 녹색 버전의 파드를 선택한다. 신버전과 구버전이 같이 존재하는 시간 없이 교체가 가능하다. 대신, 롤링 업데이트보다 필요한 리소스 사용량이 두배로 증가한다.

     

    카나리배포(Canary Deployments)

     카나리 방식은 블루/그린 방식을 기반으로 하는 또 다른 업데이트 전략이지만, 트래픽은 점차적으로 새 버전으로 이동한다. 카나리 배포 사용의 주요 이점은 업데이트 중에 과도한 리소스 사용을 최소화할 수 있다는 것이다. 카나리 배포 전략을 사용하면 일부 사용자가 버전으로 연결된다. 이를 통해 이러한 사용자가 버전을 사용할 오류 성능 문제를 모니터링할 있으며 문제가 발생할 경우 전체 사용자 기반에 미치는 영향을 최소화하여 신속하게 롤백할 있습니다.

    반응형

    댓글

Designed by Tistory.