본문 바로가기

⭐ Kubernetes & EKS/오토스케일링 (HPA, CA)

쿠버네티스 - 오토스케일링 #

# 오토스케일링

HPA : 포드의 갯수를 증가 (쿠버네티스가 기본적으로 지원하는 방식)

VPA : 리소스는 증가시키는 방법

CA : 노드를 추가 (클라우드 환경에서 적용 가능)

# 스케일링 자동화 HPA 실습

쿠버네티스 공식 사이트 > 검색 > HPA > 워크스루로 이동

- 샘플코드

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: k8s.gcr.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

- 샘플코드 활용

kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

kubectl get pod -n kube-system

# 스케일링 수행방법

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 -o yaml --dry-run

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

# hpa 조회

kubectl get hpa

kubectl get hpa -w

# 부하발생 테스트

kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

- 코드를 실행하면, 1000000 번의 loop 후에 ok 신호를 찍는 코드가 실행된다. 부하 발생기라고 보면 편하다.

# 모니터링하기

새로운 클라우드 쉘을 실행한 다음 kubectl get hpa 를 입력하여 모니터링을 해보자.

- hpa 조회 및 변화 감지

kubectl get hpa -w

- 모니터링을 하면, CPU 사용률 및 Replicas의 수 등의 정보를 확인 할 수 있다.

# ok가 찍히는 소스코드를 정지를 하면 스케일 in이 발생한다.

- 스케일 in이 바로 발생하지 않고 시간 텀을 두고 replicas의 숫자가 줄어든다.

- 늘어나는것은 즉각적으로 발생하나, 줄어드는것은 수분의 시간이 흐른 뒤 스케일 in이 발생하는것을 확인 할 수 있다.