궁금한게 많은 개발자 노트

cluster autoscaler + AWS ASG와 karpanter 차이 본문

카테고리 없음

cluster autoscaler + AWS ASG와 karpanter 차이

궁금한게 많은 개발자 2024. 9. 23. 15:29


cluster autosclaer와 karpanter 차이

일반적인 클러스터 오토스케일러의 경우에 HPA에 의한 pod의 수평확장이 발생하고, 적절한 노드를 배정받지 못하는 파드가 생기면, 파드는 pending상태에 빠집니다. 이때 Cluster Autoscaler는 pending pod가 발생한 것을 인지하고 AWS의 ASG의 desired capacity 값을 수정 요청하여 worker node개수를 증가합니다.여유 공간이 생기면 kube-scheduler가 pod를 새로운 node에 할당합니다.

이 과정에서 일반적인 CA는 CSP인 AWS ASG에 의존도가 높으며, CA의 ASG업데이트 -> 노드 생성 -> 클러스터 조인 -> Pod할당에 생각보다 많은 시간이 걸립니다. 또한 ASG는 노드를 그룹핑하여 관리하고 새로 생성될 노드를 launch template로 관리하기에 불필요한 운영 부담이 생길 수 있습니다.

 

하지만 karpenter는 이러한 과정을 조금 더 간단하게 진행합니다. AWS가 출시한 오픈소스로 애플리케이션의 로드 변화에 대응하여 적절한 크기의 컴퓨팅 리소스를 신속하게 배포함으로써 가용성과 클러스터 효율성을 개선합니다.

karpenter는 지속적으로 unscheduled pod를 모니터링하다가 node추가를 결정하고 직접 생성합니다. 추가된 노드가 준비되면 직접 pod를 스케줄링합니다. 이러한 과정에서 신속한 배포가 가능하게 됩니다.

기본적으로 karpenter는 groupless이기에 유연하게 노드를 관리할 수 있습니다. 여러 노드를 같은 인스턴스 유형으로 묶거나, 스팟 인스턴스와 온디멘드의 비율을 지정하여 생성할 수도 있으며 여러 유형의 인스턴스 타입을 적절하게 생성할 수 있습니다. 이러한 장점들 덕분에 비용 및 운영 효율화가 이루어질 수 있습니다.

 

ASG는 AWS의 다양한 리소스와 통합이 편하고 안정적인 운영이 가능하다는 장점이 있는 반면에 확장 속도와 lanuch template구성 등의 복잡성, 고정된 노드 그룹등의 단점이 있습니다.

이에 반해 karpenter는 빠른 확장및 자동 인스턴스 최적화로 인스턴스 크기와 유형을 적절히 선택하여 적합한 타입으로 생성하여 유연하게 관리가 가능합니다. 단점으로는 AWS에 최적화되어 제한된 인프라를 제공하며 새로운 도구이기에 안정성 측면에서는 ASG에 비해 부족할 수 있습니다.

 

Comments