15장 : Auto-scaling of Pod and Cluster Node


15장에서 다루는 내용

  1. CPU 사융률을 기반으로 포드의 수평적 오토스케일링 구성
  2. 사용자 지정 메트릭을 기반으로 포드의 수평적 오토스케일링 구성
  3. 포드의 수평적 스케일링 한계 이해
  4. 클러스터 노드의 수평적 오토스케일링 이해



FEATURE STATE: Kubernetes 1.11 deprecated

힙스터에서 메트릭 가져오기는 Kubernetes 1.11에서 사용 중단(deprecated)됨.


15.1 포드의 수평적 오토스케일링

Horizontal Pod Autoscaler는 어떻게 작동하는가?

Horizontal Pod Autoscaler는 컨트롤러 관리자의 --horizontal-pod-autoscaler-sync-period 플래그(기본값은 15초)에 의해 제어되는 주기를 가진 컨트롤 루프로 구현된다.

각 주기 동안 컨트롤러 관리자는 각 HorizontalPodAutoscaler 정의에 지정된 메트릭에 대해 리소스 사용률을 질의한다. 컨트롤러 관리자는 리소스 메트릭 API(파드 단위 리소스 메트릭 용) 또는 사용자 지정 메트릭 API(다른 모든 메트릭 용)에서 메트릭을 가져온다.

15.1.1 오토스케일링 프로세스

  1. HPA continuously checks metrics values you configure during setup AT A DEFAULT 15 SEC intervals
    1. HPA는 설치 중에 구성한 메트릭 값을 지속적으로 확인합니다. (기본 15 SEC 간격) 
  2. HPA attempts to increase the number of pods If the SPECIFIED threshold is met
    1. SPECIFIED 임계 값이 충족되면 HPA는 포드 수를 늘리려고합니다. 
    2. 알고리즘 세부정보

      • 가장 기본적인 관점에서, Horizontal Pod Autoscaler 컨트롤러는 원하는(desired) 메트릭 값과 현재(current) 메트릭 값 사이의 비율로 작동한다.
      • ceil[현재 레플리카 수 * ( 현재 메트릭 값 / 원하는 메트릭 값 )] = 원하는 레플리카 수
        • [3 * 200m / 100m ] = 6 (복제본 수가 두 배가 된다.)
        • [6 * 50m / 100m ] = 3 (복제본 수가 반이 된다.)
  3. HPA mainly updates the number of replicas inside the deployment or replication controller
    1. HPA는 배포 또는 복제 컨트롤러 내부의 복제본 수를 업데이트합니다.
  4. The Deployment/Replication Controller WOULD THEN roll-out ANY additional needed pods
    1. Deployment/Replication Controller 에서 추가로 필요한 포드를 롤아웃 합니다.


Pods RollOut

Pod Scaling

  1. When enabled, the cluster autoscaler algorithm checks for pending pods.
    1. 활성화되면 "클러스터 자동 스케일 알고리즘"이 보류중인 "포드"를 확인합니다.
  2. The cluster autoscaler requests a newly provisioned node if: 1) there are pending pods due to not having enough available cluster resources to meet their requests and 2) the cluster or node pool has not reached the user-defined maximum node count.
  3. Kubernetes detects the new node once it is provision by the underlying infrastructure, e.g. GCP
  4. The Kubernetes scheduler allocates the pending pods to the new node.
  5. Go back to Step 1 if there are still pods in a pending state.


오토스케일러 목록 조회

  • kubectl get hpa


오토스케일러 상세 확인

  • kubectl describe hpa


오토스케일러 삭제

  • kubectl delete hpa


CLI를 통한 오토스케일러 설정



  • No labels
Write a comment…