Difference comparison analysis of Kubernetes Autoscaling

이언철·2023년 8월 29일
0

DevOps

목록 보기
4/16
post-thumbnail

Obj. WarmPool 적용 이후 운영에서의 문제나 Needs가 될 요소가 있었는지를 파악하고 개선을 위한 Kubernetes Cluster Autoscaling 방식으로부터 해결방안을 모색한다.

Warm Pool의 문제점?

  • WarmPool로 생성된 노드가 Ready되고 해당 노드에 생성된 Pod를 종료하게 되었을 때, Terminating 상태에서 벗어나지 못함
    • 노드가 Empty되지 않아 스케줄링되지 않고 자동 확장상태
  • EKS 버전 업그레이드 시 NodeGroup 업그레이드 과정이 불편하다.
    • NodeGroup의 ASG에서 WarmPool을 해제하여야 NodeGroup을 업그레이드 할 수 있다.
  • 웜풀의 노드 확보와 CAS의 노드 스케일 아웃이 동시에 발생하게 된다면?
    • 명확한 원인을 확인하지는 못하였지만 동시에 발생하는 상황일 때 노드 생성시간이 더 오래걸리는 현상이 있다.

비교 대상

  • CAS(Cluster AutoScaling) + Warmpool
  • Karpenter
비교 항목CAS(Cluster AutoScaling) + WarmpoolKarpenter
특징ASG 사용kubernetes 상에서 노드 관리
장점AWS 콘솔에서 간단하게 적용 가능Group-less 노드 프로비저닝 가능 (노드 그룹별 설정도 가능)
프로비저너 별로 상세 설정 가능(노드 그룹별 설정 가능)
직접 EC2의 인스턴스를 생성하여 노드를 프로비저닝 해 노드 생성 속도가 빠름
node group의 인스턴스 유형과 상관 없이 해당 node group에 다른 인스턴스 유형을 추가 할 수 있다.
단점Spot Instance 사용 불가최신 기술이며 별도의 학습 필요
인스턴스 타입 추가 하려면 노드그룹 추가 생성 필요
스케일 다운 등의 설정을 노드그룹별로 설정 할 수 없음
ASG의 버그로 인해 웜풀 생성 과정이 매끄럽지 않을 수 있음
- You can't add a warm pool to an Auto Scaling group that has a mixed instances policy or a launch template or launch configuration that requests Spot Instances.
웜풀에서 확보되지 않은 인스턴스의 스케일 아웃은 웜풀 미적용 기준 시간으로 봐야 한다.
노드 생성 시간Warmpool 미적용 약 40~50초 소요약 30~40초 소요
Warmpool 적용 시 약 30~40초 소요
비용 최적화지정한 NodeGroup의 인스턴스 타입을 사용하여 Pod의 Resources와 무관함Pod의 Resources에 맞게 설정한 인스턴스 타입 내 가장 최적의 노드를 생성
장애 조치(Spot)XSpot이 안되면 즉시 On-demand 생성
Scale In-Out노드그룹별 스케일다운 시간 설정 불가능노드그룹별 스케일 다운 시간 설정 가능(프로비저너 별)
Spot 비율 조정XO
운영 관점 고려 사항EKS 버전 업그레이드 시 NodeGroup의 ASG에 연결된 Warmpool을 해제하여야 NodeGroup의 Kubernetes 버전 업그레이드 가능DevOps에서 관리 및 CAS에서 마이그레이션 과정
항상 최소 웜풀 크기를 유지하려 하여 적절한 관리 필요
profile
Soomgo, DevOps

0개의 댓글