CLOUD/Docker&Kubernetes

[Kubernetes] AutoScaling (HPA)

alsruds 2023. 4. 26. 15:37

[ 기본 설정 추가 ]

Metrics Server 설치

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.3/components.yaml

 

Kubernetes Dashboard 의 네임스페이스 : kube-system 설정 변경

》 kube-system 네임스페이스에 추가된 metrics-server 디플로이먼트 설정 변경

args:
  - '--cert-dir=/tmp'
  - '--secure-port=443'
  - '--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname'
  - '--kubelet-use-node-status-port'
  - '--metric-resolution=15s'
  - '--kubelet-insecure-tls'	# 이 부분을 추가 !

 

 확인하기

# 명령어 실행
kubectl get apiservices | grep metrics

# 정상 설치 결과
True

 


 

 

[ HPA ]

》 CPU 에 부하주기

 

Deployment

apiVersion: apps/v1
kind: Deployment		# deployment 선언
metadata:
 name: cpu1			# deployment 이름
spec:
 selector:
   matchLabels:
      resource: cpu
 replicas: 2
 template:
   metadata:
     labels:
       resource: cpu
   spec:
     containers:
     - name: container
       image: nuy0307/hello:1
       resources:
         requests:
           cpu: 100m
         limits:
           cpu: 200m

 

Service

apiVersion: v1
kind: Service
metadata:
 name: cpu-svc1
spec:
  selector:
    resource: cpu
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  type: LoadBalancer	# 로드밸런서 지정

 

AutoScale

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-resource-cpu
spec:
  maxReplicas: 5		# 최대 개수 지정
  minReplicas: 2		# 최소 개수 지정
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: cpu1
  metrics:
  - type: Resource 
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 10

 

 테스트하기

# 부하 주기
while true; do curl http://200.200.200.13/; sleep 0.01; done

# 터미널에서 실시간 현황 확인하기
kubectl get hpa -w

파드가 5개로 늘어났습니다 ~