Horizontal Pod Autoscaler(HPA)

1 분 소요

MetalLB

베어메탈(bare metal)로 구성된 쿠버네티스에서도 로드밸런서를 사용할 수 있게 고안된 프로젝트이다.

온프레미스 환경에서도 로드밸런서를 사용할 수 있도록 해준다.

# metallb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system # namespace 이름
  name: config # configmap 이름
data:
  config: |
    address-pools:
    - name: nginx-ip-range
      protocol: layer2 # metallb에서 제공하는 로드밸런서의 동작 방식
      addresses: # metallb에서 제공하는 로드밸런서의 외부 주소
      - 192.168.56.11-192.168.56.13
# kubectl apply -f metallb-config.yaml
# kubectl get configmap -n metallb-system
# kubectl get configmap -n metallb-system -o yaml

Horizontal Pod Autoscaler(HPA)

Horizontal Pod Autoscaler(;HPA)는 부하량에 따라 디플로이먼트의 파드 수를 유동적으로 관리한다.

사용자가 늘어남에 따라 파드가 사용자의 요청을 감당할 수 없게 되고 서비스가 불가한 상황을 초래할 수 있다. 코버네티스는 이 경우를 대비하여 부하량에 따라 디플로이먼트의 파드 수를 유동적으로 관리하는 기능을 제공한다.

HPA가 자원을 요청할 때 메트릭 서버(Metrics-Server)를 통해 계측값을 전달받는다.

$ kubectl autoscale deployment hpa-hname-pods --min=1 --max=30 --cpu-percent=50

powershell에서 요청을 보내서 부하를 준다.

$i=0; while($true)
{
  % { $i++; write-host -NoNewline "$i $_" }
  (Invoke-RestMethod "http://192.168.56.11")-replace '\n', " "
}

로드 밸런서가 동작하므로 파드가 새롭게 생성됨에 따라 콘솔창에 찍히는 결과(접근한 파드)가 다르다.


초기 상태 (부하가 없을 때)


CPU 부하량이 증가하면 새로운 파드가 자동으로 생성된다.


CPU 부하량이 감소하면 새로 생성되었던 파드는 종료되고, autoscale의 최소 조건은 파드 1개의 상태를 유지한다.

참고할 만한 자료

카테고리:

업데이트: