Autoscaling Simplified: How to scale your apps in Kubernetes
TL;DR: In containerized environments where application are broken down into smaller, manageable components autoscaling plays the vital role in optimising performance, resource utilisation and provides a seamless experience for end users.
devtron.ai
애플리케이션이 더 작고 관리 가능한 구성 요소로 분할되는 컨테이너화된 환경에서 AutoScaling은 성능과 리소스 활용도를 최적화하는 데 중요한 역할을 하며 최종 사용자에게 원활한 환경을 제공합니다.
AutoScaling은 컨테이너화된 환경의 중요한 측면입니다. 소프트웨어 회사가 Kubernetes 또는 Docker Swarm을 사용하여 플랫폼을 관리하는 환경으로 이동하고 있기 때문입니다. 환경을 효율적으로 관리하는 것이 중요하며 AutoScaling 은 이를 달성하는 데 도움이 되는 요소 중 하나입니다.
AutoScaling 은 다음과 같은 여러 가지 이점을 제공합니다.
1- Resource efficiency : 자원이 효율적으로 할당되도록 보장합니다. 수요가 적은 기간에는 워크로드를 축소하여 리소스를 효율적으로 소비하고 원활한 사용자 경험을 위해 로드가 더 많아지면 워크로드를 확장합니다.
2- High Availability : 자동 확장은 수요에 따라 컨테이너 수를 자동으로 조정하여 원하는 수준의 애플리케이션 가용성을 유지하는 데 도움이 됩니다.
3- Elasticity : 자동 확장된 환경에서 컨테이너는 워크로드를 원활하게 처리하고 갑작스러운 급증을 처리하며 불필요한 컨테이너를 제거하여 규모를 축소합니다. 이러한 탄력성은 워크로드를 효과적으로 처리하는 데 도움이 됩니다.
4- Cost Saving : 자동 확장은 수요에 맞게 리소스를 자동으로 조정하여 조직이 비용을 절약하는 데 도움이 됩니다. 인프라 및 클라우드 리소스 측면에서 비용 절감으로 이어집니다.
5- Simplified Management : 컨테이너화된 애플리케이션을 수동으로 관리하는 것은 약간 복잡하고 시간이 많이 걸릴 수 있습니다. 자동 크기 조정은 이 문제를 줄이고 수동 개입을 제거합니다. IT 팀이 다른 중요한 작업에 집중할 수 있도록 도와줍니다.
6- Dynamic Workload Distribution : 모든 리소스에 걸쳐 작업 부하를 효율적으로 분산시켜 모든 리소스를 효과적으로 사용할 수 있도록 합니다.
애플리케이션이 더 작고 관리 가능한 구성 요소로 세분화되는 컨테이너화된 환경에서 자동 크기 조정은 성능과 리소스 활용도를 최적화하는 데 중요한 역할을 하며 최종 사용자에게 원활한 환경을 제공합니다.
AutoScaling의 기초
최적의 성능, 리소스 활용도 및 비용 효율성을 보장하는 데 도움이 되는 다양한 측면에서 리소스 크기를 자동으로 조정할 수 있습니다. 자동 확장의 기본 사항에는 일반적으로 특정 지표를 모니터링하고 해당 지표를 확장에 사용하는 것이 포함됩니다.
1- Resource Utilisation Metrics : CPU, 메모리, 디스크 공간과 같은 시스템 리소스의 사용량을 모니터링하는 작업이 포함됩니다. 이 유형에서는 리소스 활용도가 사전 정의된 임계값을 초과하면 자동 확장이 시작됩니다.
2- Request/ThroughPut Metrics : 자동 확장은 초당 요청 수 또는 네트워크 트래픽 양과 같은 애플리케이션 수준 지표를 기반으로 할 수도 있습니다. 따라서 이러한 측정항목이 특정 수준 이상으로 증가하면 자동 크기 조정은 리소스가 로드를 처리할 수 있도록 크기를 조정하고 트래픽이 감소하면 크기도 축소합니다.
3- Custom Metrics : 애플리케이션 특정 요구 사항에 따라 일부 사용자 지정 측정 항목을 모니터링하여 해당 기준에 따라 자동 확장할 수 있도록 해야 합니다. 이러한 측정항목은 애플리케이션별 측정항목이거나 기타 관련 측정항목일 수 있습니다.
4- Scheduled Scaling : 기간에 따라 특정 요구 사항이 있을 수 있으며 업무 시간에 워크로드를 확장하고 사용량이 적은 시간에 워크로드를 축소하는 등 워크로드를 자동 확장하는 기간을 미리 정의할 수 있습니다.
5- Latency or ResponseTime : 애플리케이션 응답 시간 또는 지연 시간이 증가하면 이는 애플리케이션이 로드를 처리할 수 없음을 의미하므로 사용자의 원활한 경험을 위해 자동 크기 조정이 필요합니다.
AutoScaling의 종류
노드나 포드와 같은 워크로드의 자동 확장은 다양한 방법으로 수행할 수 있습니다.
1-Horizontal Pod Autoscaling (HPA) : HPA는 CPU 사용률 또는 기타 지표를 기반으로 포드의 복제본을 자동으로 조정합니다. 제한 및 요청 리소스가 설정되면 Kubernetes는 자동으로 Pod 수를 조정하고 원하는 대상을 유지합니다.
2- Vertical Pod Autoscaling (VPA) : VPA는 과거 리소스 사용량을 기반으로 설정된 리소스를 자동으로 조정합니다. 이는 개별 포드의 리소스 할당을 최적화하는 데 도움이 될 수 있습니다.
3- Cluster Autoscaler : Cluster Autoscaler는 리소스 제약으로 인해 예약할 수 없는 Pod의 수요에 대응하여 노드 풀의 크기를 조정합니다. 워크로드를 수용하기 위해 클러스터에서 노드를 추가하거나 제거합니다.
4- Kubernetes Custom Controllers : 고급 사용자는 Kubernetes 표준 메커니즘 이상으로 워크로드를 자동 확장하는 데 도움이 되는 자체 Kubernetes 컨트롤러를 개발할 수 있습니다.
'PaaS > Kubernetes' 카테고리의 다른 글
Secret의 종류 (0) | 2024.08.03 |
---|---|
ContainerD에서 Kubernetes 설치하기 (0) | 2024.02.15 |
Provider별 Ingress Class의 개발 상태 (0) | 2024.01.22 |
Deployment를 배포한 후 Rollback이 필요할때 (0) | 2024.01.18 |
Docker Garbage 삭제 Docker Prune (0) | 2024.01.17 |