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
참조 문서
'IT > AWS' 카테고리의 다른 글
[AWS] VPC 피어링간 s3 endpoint 통신 방법 (2) | 2023.11.09 |
---|---|
[AWS] EKS 트러블 슈팅 (aws-auth 권한 추가 이슈) (0) | 2023.02.09 |
[AWS] EC2 Default Region 설정하기 (feat. vpc endpoint) (2) | 2022.10.05 |
[FinOps] 오픈소스 Bill bot 사용기 (슬랙으로 AWS비용 레포트 받는법) (0) | 2022.09.16 |
[AWS] IRSA 란? (IAM Roles for Service Accounts) (0) | 2022.09.09 |