모험가

AEWS 5주차 - EKS Autoscaling(HPA, VPA, CAS, Karpenter, KEDA - 이론) 본문

쿠버네티스/AEWS

AEWS 5주차 - EKS Autoscaling(HPA, VPA, CAS, Karpenter, KEDA - 이론)

라리음 2025. 3. 5. 13:27
본 글은 가시다님이 진행하시는 AEWS(AWS EKS Workshop Study)를 참여하여 정리한 글입니다. 
모르는 부분이 많아서 틀린 내용이 있다면 말씀 부탁드리겠습니다!

 

 

 

 

 


EKS AutoScaling 종류

 

 

EKS Auto Scaling기술에는 대표적으로 4개가 존재합니다.

 

1. HPA

2. VPA

3. CAS

4. Karpenter

 

 

HPA, VPA
CAS
Karpenter

 

그림 출처 : CON324_Optimizing-Amazon-EKS-for-performance-and-cost-on-AWS

 

 

 

특징

 

  1. VPA (Vertical Pod Autoscaler): Pod Scale-up/down
    • VPA는 개별 파드의 CPU와 메모리 요구사항을 모니터링하고 자동으로 조정합니다.
    • 파드의 리소스 사용량이 증가하면 VPA가 자동으로 파드의 리소스 요청을 늘려줍니다.
    • 이를 통해 파드가 필요한 만큼의 리소스를 사용할 수 있도록 합니다.
  2. HPA (Horizontal Pod Autoscaler): Pod Scale-out/in
    • HPA는 파드의 수를 자동으로 늘리거나 줄여 클러스터의 부하를 관리합니다.
    • CPU 사용률, 메모리 사용률 등의 지표를 모니터링하여 파드 수를 조정합니다.
    • 서비스의 트래픽이 증가하면 HPA가 자동으로 파드 수를 늘려 확장성을 제공합니다.
  3. CSA (Cluster Autoscaler): Node Scale-out/in
    • CSA는 클러스터의 노드 수를 자동으로 늘리거나 줄여 리소스 활용도를 최적화합니다.
    • 노드의 리소스 사용량을 모니터링하여 필요에 따라 노드를 추가하거나 제거합니다.
    • 이를 통해 클러스터가 항상 적절한 리소스를 가지도록 유지합니다.
  4. Karpenter: Node Scale-out/in & up/down
    • Karpenter는 AWS에서 개발한 오픈소스 자동 스케일링 솔루션입니다.
    • 기존 Cluster Autoscaler와 유사한 기능을 제공하지만, 더 유연하고 확장 가능한 아키텍처를 가지고 있습니다.
    • Karpenter는 다양한 EC2 인스턴스 유형과 스팟 인스턴스를 활용하여 비용 효율성을 높일 수 있습니다.

 

VPA

 

HPA

 

CAS


Karpenter

 

 

CAS와 Karpenter이 둘다 노드의 Scale out/in을 지원하는데 특징이 무엇이 있을까요?

 

 

CAS

 

 

CAS (Cluster Autoscaler):

  • CAS는 Kubernetes 클러스터의 노드 수를 자동으로 조정하는 기능을 제공합니다.
  • 클러스터의 리소스 사용량을 모니터링하여, 필요에 따라 노드를 추가하거나 제거합니다.
  • 이를 통해 클러스터가 항상 적절한 리소스를 가지도록 유지할 수 있습니다.
  • CAS는 AWS, GCP, Azure 등 다양한 클라우드 환경에서 사용할 수 있습니다.

CAS의 한계점:

    • CAS는 기본적으로 노드 수만 조정하므로, 노드 내부의 리소스 활용도를 최적화하지 못합니다.
    • 예를 들어, 노드의 CPU나 메모리 사용량이 높더라도 CAS는 새로운 노드를 추가하지 않습니다.
    • 혼합 인스턴스 타입은 가능한 CPU와 메모리가 균등하게 되어야 합니다.

 

 

Karpenter

 

Karpenter:

  • Karpenter는 AWS에서 개발한 오픈소스 자동 스케일링 솔루션입니다.
  • CAS와 유사한 기능을 제공하지만, 더 유연하고 확장 가능한 아키텍처를 가지고 있습니다.
  • Karpenter는 다양한 EC2 인스턴스 유형과 스팟 인스턴스를 활용하여 비용 효율성을 높일 수 있습니다.
  • 노드 수 조정 외에도 노드 내부의 리소스 활용도를 최적화할 수 있습니다.
  • 사용자 정의 스케일링 정책을 설정할 수 있어 다양한 요구사항을 충족할 수 있습니다.

 

첫번째 그림과 같이 CAS와 달리 Karpenter이 사전에 정의된 내용에 따라 직접 EC2플릿에 추가/제거를 하기때문에 빠른 속도로 인프라를 확장/축소가 가능해집니다.

 

 


KEDA

 

 

 

 

KEDA(Kubernetes-based Event Driven Autoscaling) 는 Kubernetes 환경에서 이벤트 기반 자동 스케일링을 제공하는 강력한 오픈소스 솔루션입니다.

CAS, Karpenter 등과 함께 EKS 클러스터의 효과적인 자동 스케일링을 위해 활용될 수 있습니다.

 

 

특징

 

  • 이벤트 기반 서버리스 워크로드 자동 스케일링
  • 메시징 시스템(RabbitMQ, Apache Kafka 등) 기반 애플리케이션 스케일링
  • 외부 API 호출 기반 워크로드 스케일링

 

 


EKS Node Viewer

 

https://stormforge.io/blog/intro-autonomous-cost-optimization-kubernetes-optimize-live/

 

EKS Node Viewer는 EKS 클러스터의 노드 상태를 시각화하고 모니터링할 수 있는 유용한 도구입니다. 이를 통해 EKS 클러스터의 안정성과 가용성을 높일 수 있습니다.

 

 

특징

 

  • 노드 상태 모니터링: EKS Node Viewer를 통해 EKS 클러스터의 노드 상태를 실시간으로 확인할 수 있습니다. CPU, 메모리, 디스크 사용량 등 다양한 지표를 확인할 수 있습니다.
  • 시각화: EKS Node Viewer는 노드 상태를 직관적인 대시보드 형태로 제공합니다. 노드의 상태, 리소스 사용량 등을 한눈에 파악할 수 있습니다.
  • 문제 해결 지원: 노드 상태 모니터링을 통해 리소스 부족, 노드 장애 등의 문제를 신속하게 파악하고 해결할 수 있습니다.
  • 확장성: EKS Node Viewer는 EKS 클러스터 뿐만 아니라 다른 Kubernetes 클러스터에서도 사용할 수 있습니다.
  • 통합성: EKS Node Viewer는 AWS CloudWatch, AWS CloudTrail 등 다른 AWS 서비스와 통합되어 보다 포괄적인 모니터링 환경을 제공합니다.

 

 

# Windows 에 WSL2 (Ubuntu) 설치
sudo apt install golang-go
go install github.com/awslabs/eks-node-viewer/cmd/eks-node-viewer@latest  # 설치 시 2~3분 정도 소요
echo 'export PATH="$PATH:/root/go/bin"' >> /etc/profile

 

# 사용법

# Standard usage
eks-node-viewer

# Display both CPU and Memory Usage
eks-node-viewer --resources cpu,memory
eks-node-viewer --resources cpu,memory --extra-labels eks-node-viewer/node-age

# Display extra labels, i.e. AZ : node 에 labels 사용 가능
eks-node-viewer --extra-labels topology.kubernetes.io/zone
eks-node-viewer --extra-labels kubernetes.io/arch

# Sort by CPU usage in descending order
eks-node-viewer --node-sort=eks-node-viewer/node-cpu-usage=dsc

# Karenter nodes only
eks-node-viewer --node-selector "karpenter.sh/provisioner-name"

# Specify a particular AWS profile and region
AWS_PROFILE=myprofile AWS_REGION=us-west-2