System Engineering/Kubernetes

8. K8s AutoScaling

2021. 4. 11. 23:49
반응형

1. AutoScaling

  • HPA (Horizontal Pod Autoscaler)

 RC / RS / Deploymen를 통해 실행되는 Pod의 Scaling이다. 설정된 주기(Default 30초)마다 CPU 사용률등의 Metric을 모니터링하며, DaemonSet에는 적용되지 않는다.

 

  apiVersion: autoscaling/v2alpha1
  kind: HorizontalPodAutoscaler
  metadata:
    name: hpa-ex
    namespace: default
  spec:
    scaleTargetRef:
      apiVersion: apps/v1beta1
      kind: Deployment
      name: hpa-ex
    minReplicas: 3
    maxRelpicas: 9
    metircs:
    - type: Resource
      reousrce:
        name: cpu
        targetAverageUtilization: 65

 

  • VPA (Vertical Pod Autoscaler)

 Pod의 Resource에 대한 Scaling으로 Auto와 Manual 2가지 모드가 있다.

 

  - Auto : Pod를 모니터링하여 Resource size를 분석하고 request 값을 수정하여, Sacling을 실행한다.

                (변경된 request 값을 반영하기 위해 Pod Restart 발생)

 

  - Manual : 분석하여 산출한 request 값만 출력하고 Scaling을 실행하지는 않는다

 

  apiVersion: autoscaling.k8s.io/v1beta2
  kind: VerticalPodAutoscaler
  metadata:
    name: api-server
  spec:
    targetRef:
      apiVersion: "extensions/v1beta1"
      kind: Deployment
      name: api-server
    updatePolicy:
      updataMode: "Auto"

  * HPA와 VPA를 동시에 사용하는 것은 K8s가 혼동할 수 있기 때문에 권고되지 않는다.

  * 서비스 환경에서는 HPA, 개발 환경에서는 VPA의 Manual 모드를 통한 성능 튜닝이 적합하다

 

  • CA (Clutser Autoscaler) - Node Scaling

 Pod가 생성될 때, 노드의 리소스 부족으로 Pod의 상태가 Pending이 되면 Node Scale-Out이 Trigger 된다. - Overcommitted state와는 별개

 

 - Node Scale-In

 리소스 모니터링 중 Scale-In이 Trriger되면 Pod를 Restart를 통해 Node를 비우는 작업을 진행하는데, 원하지 않는 Restart가 발생할 수 있어 주의가 필요하다. 이를 방지하기 위해서 아래와 같은 설정을 하는것이 좋다.

  • Locat Storage를 사용하는 Pod에 대해서는 'cluster-autoscaler.kubernetes.io/safe-to-svict: "true"' 설정을 통해 Pod가 제거되는 것을 방지한다.
  • Stateful한 Pod의 경우 Contoller의 관리에서 벗어나도록 하는 경우도 있다. 관리 밖의 Pod는 한 번 Eviction되면 다시 Restart될 수 없기때문에 강제적으로 Eviction되지 않는다.
  • PDB를 통해 Pod의 Restart나 Eviction이 발생하여도 다른 Replica가 생성되기 까지 기다려서 서비스 중단이 없도록 한다

 * PDB(Pod Disruption Budget) : Node 내에 최소로 유지되는 Pod의 개수(Quorum) 설정

 

2. Reference

Kubernetes Advanced Workshop
조대협의 블로그
 
반응형

'System Engineering > Kubernetes' 카테고리의 다른 글

Kubernetes Authentication  (0) 2022.09.11
Kubernetes Lease (Node Heartbeat)  (0) 2022.01.10
7. K8s Resource / Scheduling  (0) 2021.04.05
6. K8s Volume  (0) 2021.04.05
5. K8s Lifecycle / Configmap  (0) 2021.04.02
'System Engineering/Kubernetes' 카테고리의 다른 글
  • Kubernetes Authentication
  • Kubernetes Lease (Node Heartbeat)
  • 7. K8s Resource / Scheduling
  • 6. K8s Volume
Hopulence
Hopulence
Hopulence
IT 뉴비 생존기
Hopulence
  • 분류 전체보기
    • System Engineering
      • Linux
      • Zabbix
      • Kubernetes
      • Ceph
      • Algorithm
      • Network
      • AWS
      • etc
    • 안씀
      • LTE & 5G
      • minio

블로그 메뉴

  • 글쓰기
반응형
hELLO · Designed By 정상우.
Hopulence
8. K8s AutoScaling
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.