워크로드를 스케일링하는 방법
- 수동 스케일링: kubectl 명령어를 사용하거나 Cloud 콘솔에서 원하는 파드의 총 개수를 정의하여 수동으로 스케일링할 수 있습니다. 또한 매니페스트를 직접 변경하여 스케일링할 수도 있습니다.
- 자동 스케일링: Autoscaler를 사용하여 자동으로 스케일링할 수 있습니다. Autoscaler 를 사용하면 최소 및 최대 파드 수와 CPU 사용률 임계값을 지정하여 파드를 자동으로 스케일링할 수 있습니다. HPA는 Kubernetes 클러스터 내에서 특정 워크로드의 CPU 사용률을 모니터링하고, 임계값을 초과하면 파드의 수를 자동으로 늘리고, 임계값 이하로 내려가면 파드의 수를 자동으로 줄입니다.
- 수평 및 수직 스케일링: Multidimensional Pod Autoscaling을 사용하여 CPU에 기반한 수평 스케일링과 메모리에 기반한 수직 스케일링을 동시에 사용할 수 있습니다. 이를 통해 클러스터의 스케일링 방법을 선택하는 제약에서 벗어날 수 있습니다.
# 수동 scale
$ kubectl scale deployment [DEPLOYMENT_NAME] --replicas=5
# autoscale
$ kubectl autoscale deployment [DEPLOYMENT_NAME] --min=5 --max=15 --cpu-percent=75
자동 스케일링의 이점
- 리소스 효율성: 자동 스케일링은 애플리케이션의 수요에 따라 리소스를 동적으로 조정하여 효율적으로 사용할 수 있습니다. 이는 필요한 만큼의 리소스를 할당하고, 불필요한 리소스를 해제하여 비용을 절감할 수 있습니다.
- 가용성 및 신뢰성: 자동 스케일링은 애플리케이션의 부하가 증가할 때 자동으로 인스턴스를 추가하여 가용성과 신뢰성을 향상시킵니다. 이는 사용자 요청에 대한 응답 시간을 줄이고, 장애 시에도 서비스의 지속성을 보장할 수 있습니다.
- 유연성: 자동 스케일링은 애플리케이션의 부하에 따라 자동으로 인스턴스를 추가하거나 제거하여 유연하게 대응할 수 있습니다. 이는 예상치 못한 부하 증가에 대비하여 애플리케이션의 성능을 유지할 수 있습니다.
- 운영 효율성: 자동 스케일링은 수동으로 인스턴스를 관리하는 번거로움을 줄여줍니다. 이는 운영 팀의 작업 부담을 줄이고, 자원을 효율적으로 관리할 수 있도록 도와줍니다.
자동 스케일링은 클라우드 환경에서 특히 유용하며, Kubernetes와 같은 오케스트레이션 도구를 사용하여 쉽게 구현할 수 있습니다. 이를 통해 애플리케이션의 성능과 가용성을 최적화할 수 있습니다.
Horizontal Pod Autoscaler(HPA) vs Vertical Pod Autoscaler(VPA)
Horizontal Pod Autoscaler(HPA)와 Vertical Pod Autoscaler(VPA)는 둘 다 Kubernetes에서 자동 스케일링을 지원하는 기능입니다. 그러나 HPA와 VPA는 서로 다른 방식으로 동작합니다.
- Horizontal Pod Autoscaler(HPA): HPA는 CPU 사용률과 같은 메트릭을 기반으로 파드의 수를 자동으로 조정합니다. 예를 들어, 웹 프론트엔드 인스턴스가 필요한 경우 HPA를 사용하여 배포를 수평으로 확장할 수 있습니다. HPA는 클러스터 내 특정 배포에 대해 동작하며, 원하는 CPU 사용률을 맞추기 위해 파드의 수를 조정합니다.
- Vertical Pod Autoscaler(VPA): VPA는 시간에 따른 리소스 사용량에 대한 권장 사항을 제공합니다. VPA는 파드의 리소스 요구 사항을 추적하고, 리소스 사용량에 따라 파드의 리소스 요구 사항을 조정합니다. 예를 들어, VPA는 메모리 사용량에 따라 파드의 메모리 요구 사항을 조정할 수 있습니다. VPA는 파드의 리소스 요구 사항을 최적화하여 클러스터의 리소스 사용을 효율적으로 관리합니다.
따라서, HPA는 CPU 사용률과 같은 메트릭을 기반으로 파드의 수를 조정하고, VPA는 리소스 요구 사항을 추적하고 조정하여 파드의 리소스 사용을 최적화합니다.
Thrashing
Thrashing은 배포된 복제본의 수가 자주 변동되는 현상을 말합니다. 이는 스케일링을 제어하는 데 사용되는 지표가 자주 변동하기 때문에 발생합니다. Horizontal Pod Autoscaler는 스케일 다운 작업을 수행하기 전에 대기 기간을 지정할 수 있는 쿨다운 또는 딜레이 기능을 지원합니다. default값은 5분입니다.
'CLOUD & MLOPS' 카테고리의 다른 글
| [Kubernetes] 중요 용어 이해하기(클러스터, 노드, 파드, 서비스, 디플로이먼트, 네임스페이스, 볼륨 등) (0) | 2024.05.01 |
|---|---|
| [Kubernetes] kubectl Rollback and Rollout command (0) | 2024.04.29 |
| [Kubernetes]Rolling Updates (0) | 2024.04.29 |
| [Kubernetes] GCP Kubernetes Engine Clusters and Node 생성 및 업그레이드 (1) | 2024.04.29 |
| [DOCKER] 우분트에서 도커 설치(Install Docker Engine on Ubuntu) (1) | 2024.04.25 |