본문 바로가기
AEWS2기

CA, CPA, Karpenter

by yeongki0944 2024. 4. 6.

CA (Cluster Autoscaler)

  • karpenter를 사용하기 전에 이해해야 되는 부분
  • CA → 워커노드 스케일링
  • ASG 이미 존재 → ASG를 활용해서 CA를 진행함

 

https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/100-scaling/200-cluster-scalingALT

  • Cluster Autoscale 동작을 하기 위한 cluster-autoscaler 파드(디플로이먼트)를 배치합니다.
  • Cluster Autoscaler(CA)는 pending 상태인 파드가 존재할 경우, 워커 노드스케일 아웃합니다.
  • 특정 시간을 간격으로 사용률을 확인하여 스케일 인/아웃을 수행합니다. 그리고 AWS에서는 Auto Scaling Group(ASG)을 사용하여 Cluster Autoscaler를 적용합니다.

 

CA 문제점

  • 하나의 자원에 대해 두군데 (AWS ASG vs AWS EKS)에서 각자의 방식으로 관리
       ⇒ 관리 정보가 서로 동기화되지 않아 다양한 문제 발생
  • CA 문제점 : ASG에만 의존하고 노드 생성/삭제 등에 직접 관여 안함
  • EKS에서 노드를 삭제 해도 인스턴스는 삭제 안됨
  • 노드 축소 될 때 특정 노드가 축소 되도록 하기 매우 어려움 : pod이 적은 노드 먼저 축소, 이미 드레인 된 노드 먼저 축소
  • 특정 노드를 삭제 하면서 동시에 노드 개수를 줄이기 어려움 : 줄일때 삭제 정책 옵션이 다양하지 않음
    • 정책 미지원 시 삭제 방식(예시) : 100대 중 미삭제 EC2 보호 설정 후 삭제 될 ec2의 파드를 이주 후 scaling 조절로 삭제 후 원복
  • 특정 노드를 삭제하면서 동시에 노드 개수를 줄이기 어려움
  • 폴링 방식이기에 너무 자주 확장 여유를 확인 하면 API 제한에 도달할 수 있음
  • 스케일링 속도가 매우 느림
  • Cluster Autoscaler 는 쿠버네티스 클러스터 자체의 오토 스케일링을 의미하며, 수요에 따라 워커 노드를 자동으로 추가하는 기능
  • 언뜻 보기에 클러스터 전체나 각 노드의 부하 평균이 높아졌을 때 확장으로 보인다 → 함정! 🚧
  • Pending 상태의 파드가 생기는 타이밍에 처음으로 Cluster Autoscaler 이 동작한다
    • 즉, Request 와 Limits 를 적절하게 설정하지 않은 상태에서는 실제 노드의 부하 평균이 낮은 상황에서도 스케일 아웃이 되거나, 부하 평균이 높은 상황임에도 스케일 아웃이 되지 않는다!
  • 기본적으로 리소스에 의한 스케줄링은 Requests(최소)를 기준으로 이루어진다. 다시 말해 Requests 를 초과하여 할당한 경우에는 최소 리소스 요청만으로 리소스가 꽉 차 버려서 신규 노드를 추가해야만 한다. 이때 실제 컨테이너 프로세스가 사용하는 리소스 사용량은 고려되지 않는다.
  • 반대로 Request 를 낮게 설정한 상태에서 Limit 차이가 나는 상황을 생각해보자. 각 컨테이너는 Limits 로 할당된 리소스를 최대로 사용한다. 그래서 실제 리소스 사용량이 높아졌더라도 Requests 합계로 보면 아직 스케줄링이 가능하기 때문에 클러스터가 스케일 아웃하지 않는 상황이 발생한다.
  • 여기서는 CPU 리소스 할당을 예로 설명했지만 메모리의 경우도 마찬가지다.

 

 

CPA (Cluster Proportional Autoscaler)

  • 노드 수 증가에 비례하여 성능 처리가 필요한 애플리케이션(컨테이너/파드)를 수평으로 자동 확장 ex. coredns - Github Workshop

 

Karpenter

  • Kubernetes 스케줄러가 스케줄링할 수 없는 상태로 표시한 파드감시
  • 파드가 요청한 스케줄링 제약 조건(리소스 요청, 노드 선택자, 애피니티, 톨러레이션, 및 토폴로지 전파 제약 조건)을 평가
  • 파드의 요구 사항을 충족하는 노드프로비저닝
  • 파드를 새로운 노드에 스케줄링
  • 더 이상 필요하지 않을 때 노드를 제거

CON405_How-to-monitor-and-reduce-your-compute-costs.pdfALT

 

 

 

  • ASG - 노드를 삭제하는 옵션이 제한적

  • 보안그룹, 서브넷은 필수입력
    • 태그 기반으로 자동으로 리소스를 찾아 적용하는 방식
    • 리소스 ID를 명시적으로 지정하는 방식

  • 기본 스토리지 용량 : 20GB 

 

  • 온디맨드, 스팟 선택가능

 

 

  • 비용 월 천만원 절약