본문으로 바로가기

[AWS] Cluster Autoscaler의 주요 옵션들(CA deep dive)

category IT/AWS 2022. 10. 7. 10:08
반응형

Intro

EKS를 구축을 고려하였다면 Cluster Autoscaler 사용을 권장드립니다. 그 이유는 클라우드라는 장점을 극대화 시킬 수 있고 비용절감과 안정적인 scale in/out을 도와주기 때문이죠. 이 cluster autoscaler에도 몇가지 고려해야할 옵션들이 있습니다.

오늘은 cluster autoscaler의 몇가지 주요 옵션에 대해 자세히 확인해보겠습니다.

Cluster Autocaler의 기본 설정들

  • cluster Autoscaler는 기본적으로 매 10초 간격으로 스케줄되지 않은 pod가 있는지 체크한다 **scan-interval**
  • 노드가 10분 동안 사용하지 않는 것으로 판단되면 스케일인 을 한다. **scale-down-unneeded-time**
  • 노드에 실행중인 모든 파드의 cpu 및 메모리가 노드가 할당가능한 양의 50%미만일 경우 축소한다. scale-down-utilization-threshold
  • 일부 유형의 포드는 CA가 노드를 제거하지 못하도록 할 수도 있다
    • annotation 설정이 있을 경우: “Cluster-autoscaler.kubernetes.io/scale-down-disabled” : “true”
    • 제한적인 PodDisruptionBudget이 있는 pod
    • node selector 또는 affinity가 매칭되지 않거나, 리소스 부족으로 할당할 수 없는 pod

주요 Cluster Autoscaler 옵션들

cluster autoscaler에는 다양한 옵션들이 있습니다. 모든 옵션값을 확인하려면 아래 링크 참조 하시기 바랍니다. https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-the-parameters-to-ca

scale-down-unneeded-time

  • 노드가 축소되기전에 필요하지 않다고 판단하는데 필요한 시간
  • 기본값 10분

scale-down-delay-after-delete

  • 노드 삭제 후 축소 평가가 재개되는 기간
  • 기본값 10초

scale-down-utilization-threshold

  • 요청된 리소스의 합계를 용량으로 나눈 노드 사용량으로, 그 이하가 되면 노드 축소 가능
  • 기본값 0.5 (50%)

max-empty-bulk-delete

  • 비어있는 노드를 삭제 할 수 있는 최대 노드 개수
  • 기본값 10

skip-nodes-with-local-storage

  • EmptyDir 또는 HostPath와 같은 로컬 저장소가 있는 포드가 있는 노드 삭제 skip 할지 유무
  • 기본값 ture (즉, 삭제 하지 않음)

balance-similar-node-groups

  • 모든 가용 영역에서 사용 가능한 컴퓨팅이 충분한지 확인
  • 기본값 true

skip-nodes-with-system-pods

  • kube-system에서 사용하는 pod가 있으면 노드를 삭제하지 않는다. (DeamoSnet 또는 mirror pod 제외)
  • 기본값 true (즉, 삭제 하지 않음)

max-graceful-termination-sec

  • 노드 축소시 CA는 기본적으로 포드에 최대 10분의 정상적인 종료 시간을 제공합니다. 포드가 이 10분 이내에 중지되지 않으면 노드는 어쨌든 종료 됨
  • 기본값 10분

scale-down-enabled

  • 노드 축소를 할 것인지 유무
  • 기본값 true

expander

  • random 기본 확장기이며 노드 그룹을 다르게 확장할 특별한 필요가 없을 때 사용해야 합니다.
  • most-pods 확장 시 가장 많은 포드를 예약할 수 있는 노드 그룹을 선택합니다. 이는 nodeSelector를 사용하여 특정 포드가 특정 노드에 놓이도록 할 때 유용합니다. 한 번에 여러 개의 작은 노드를 추가할 수 있으므로 이렇게 하면 자동 확장 처리가 더 큰 노드와 더 작은 노드를 선택하지 않습니다.
  • least-waste 확장 후 유휴 CPU(동일한 경우 사용하지 않는 메모리)가 가장 적은 노드 그룹을 선택합니다. 이는 높은 CPU 또는 높은 메모리 노드와 같이 다양한 타입의 노드가 있고 이러한 리소스가 많이 필요한 보류 중인 포드가 있는 경우에만 해당 노드를 확장하려는 경우에 유용합니다.
  • price비용이 가장 적게 드는 노드 그룹을 선택하고 동시에 해당 시스템이 클러스터 크기와 일치할 노드 그룹을 선택합니다. 현재 GCE, GKE 및 Equinix Metal에서만 작동합니다.
  • priority사용자가 할당한 우선 순위가 가장 높은 노드 그룹을 선택합니다.

노드 축소를 빠르게 할 수 있도록 튜닝할 수 있는 옵션 들

scale-down-unneeded-time
scale-down-utilization-threshold
scale-down-unready-time

노드의 직렬 축소를 빠르게 할 수 있도록 튜닝할 수 있는 옵션 들

scale-down-delay-after-add
max-empty-bulk-delete
scan-interval
scale-down-delay-after-failure
scale-down-delay-after-delete
unremovable-node-recheck-timeout

참조 문서

https://ap-northeast-2-02860049-inspect.menlosecurity.com/safeview-fileserv/tc_download/717cf5ef26d9ff778b02cd15513b12cc6115d750f9873c691d58d344d8986a5c/?&cid=N1DD1AC047908_&rid=1b5a74ca0163fca85ff3e6b93821276b&file_url=https%3A%2F%2Fd1.awsstatic.com%2Fevents%2Freinvent%2F2019%2FREPEAT_3_Deep_dive_Kubernetes_auto_scaling_CON418-R3.pdf&type=original

반응형