5주차 - EKS Autoscaling - HPA/KEDA, VPA, CA, CPA, Karpenter
0. 도입
HPA 를 사용해 AutoScaling을 진행합니다.
Keda 를 이용해서 AutoScaling을 진행합니다.
VPC, CA, CPA 에 대한 내용을 확인하고 AutoScaling을 진행합니다.
Karpenter의 autoscaling에 대해 알아보고 autoscaling을 진행합니다.
다시 한번 가르침을 주시는 @CloudNet 팀에 감사함을 표합니다!
1. 선수지식
grafana
prometheus
metrics server
2. 실습 환경 배포
이번 환경은 vertical scaling 을 고려해 노드를 t3.medium로 설정되었다.
이외에도
DNS 설정
LB 설정
GP3 스토리지 클래스 생성
eksctl 설치 및 addon들의 정책을 설정
Grafana
Prometheus 설치
Node Viewer 설치


Node Viewer 설치 확인
grafana도 설치 확인
3. HPA - Horizontal Pod Autoscaler
A. [이론] Horizontal Pod AutoScaling이란?

Stateless 한 애플리케이션에 주로 사용됨
CPU나 메모리 사용률 같은 메트릭을 감시하다가 일정 비율이 넘어가면 Scale in or out을 하게 됩니다.
B. [실습] kube-ops-view 와 그라파나(17125)에서 모니터링 하면서 load 늘리기
목적: 로드가 늘면 pod가 생성되는것을 확인
실험 설정:
kube-ops-view
grafana 에서 확인
php docker 애플리케이션으로 부하 생성
실험 결과:
scaling max 까지 되는것을 확인


HPA 정책 이 MAX값이 10으로 되어있었고
사이즈가 점점 늘어나는것을 확인 가능
4. KEDA - Kubernetes Based Event Driven Autoscaler
A. [이론] KEDA AutoScaler
인프라 컴포넌트들(kafka, queue) 에서 생기는 지표를 가지고 event를 생성해서 자동 스케일링을 하게 됩니다.
B. [실습] KEDA with Helm : 특정 이벤트(cron 등) 기반의 파드 오토 스케일링
목적: 이벤트 기반으로 해당 파드가 오토 스케일링 되는지 확인
실험 설정:
keda 설치
grafana 에서 확인
ScaledObject 정책 생성: 크론으로 이벤트 생성

실험 결과:
45분까지 대기하고 grafana에서 해당 값 올라오는 것을 확인


5. VPA - Vertical Pod Autoscaler
A. [이론] VPA

최근 사용량을 기준으로 여유값을 추가해서 pod의 최적값을 계산합니다.
Scale up/down을 하게됩니다.
pod resources.request 값을 수정합니다.
Stateful 한 애플리케이션에 주로 사용됩니다.
HPA와 같이 사용되지 않음
B. [실습]
목적: VPA 로 신규 파드 Autoscaling 확인
실험 설정:
VPA 웹훅배포 확인
VPA 배포

실험 결과:
REQUEST 값이 변경되기전 확인

Request 값이 변경되기 이후 확인

grafana 값은 수집이 늦어져서 진행하지 못했다.
6. CA - Cluster Autoscaler
A. Cluster AutoScaler

Deployment 배치
CA 가 pending 상태인 파드 있을 시에 워커 노드를 스케일 아웃
사용률을 이용한 스케줄 스케일 인/아웃
AWS ASG 사용해서 Autoscaling
문제점:
ASG에만 의존
EKS 노드 삭제 시 인스턴스 삭제 안됨
스케일링 속도 낮음
Request 와 Limit에 맞춰서 스케일 아웃 인이 되지 않는다.
B. [실습] Scale cluster with cluster autoscaler
목적: cluster autoscaler로 클러스터 스케일링 확인
실험 설정:
현재 ASG 정보 확인 및 값 MAX 값6으로 변경
CA 설정
Nginx 배포 및 스케일



실험 결과:
nginx replicas 15 설정
scaling 되는 부분 확인


노드 개수는 줄어들지 않는것을 확인 시간이 더 필요해보인다.

7. CPA - Cluster Proportional Autoscaler
A. Cluster Proportional AutoScaler

노드수에 따른 파드갯수 추가 배포 (비례 배포)
B. [실습] Proportional AutoScaler 확인하기
목적: 설정값대로 node 값에 비례해 pod 배포되는지 확인
실험 설정:
CPA 규칙 설정

실험 결과:
노드 5개 증가시에 파드 갯수 증가 5개로확인

8. Karpenter - K8S Native AutoScaler
A. Karpenter
ASG를 거치거나 Cluster Autoscaler를 거치지 않고 바로 EC2를 생성해주는 AWS 솔루션이다.
23년 10월에 베타가 완료됨
빠르다!
B. [실습] Karpenter 이용해서 scale 설정하기
목적: CSI 드라이버를 설치하고 실제 스토리지 클래스를 생성하는것을 확인
중요한점:
NodePool yaml의 일부분이다.
관리 리소스는 securityGroupSelector and subnetSelector로 찾음을 알아둬야한다.

실험 설정:
karpenter 설치
NodePool 설정 완료
그라파나 설치


실험 결과:
해당 replica의 증가에 따라 pod 증가 확인 node 증가확인


해당 replica 감소에 따라 pod 감소 확인

흠.. role 설정이 잘못되어있는것으로 보인다.\
확인 결과 karpenter 관련 add on 의 설정이 완료되지 않았었다.
예상되는 결과는 노드가 줄어드는것이다.
Last updated