클라우드 엔지니어/클라우드 캠프과정

쿠버네티스 HPA

해아's 2022. 10. 20. 10:42
    (3) HorizontalPodAutoscaler
      [1] Metrics Server 설치
	kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml
	
	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로 나오면 정상 설치 된 것


	metrics-server 설치 후 metrics-server파드의 로그를 봤을 때 context deadline exceeded 에러가 나는 경우
	metrics-server 파드가 다른 노드의 kubelet과 통신이 안되서 생기는 문제

	이럴 경우
	kube-system 네임스페이스에 추가된 metrics-server 디플로이먼트의 설정을 변경
	dnsPolicy: ClusterFirst
      	hostNetwork: true		<---- 이걸 추가

	
	
	kubectl top node	명령어로 확인
	kubectl top pod
	
      [2] HPA 설정

 

디폴로이먼트 설정

apiVersion: apps/v1
kind: Deployment
metadata:
 name: cpu1
spec:
 selector:
   matchLabels:
      resource: cpu
 replicas: 2
 template:
   metadata:
     labels:
       resource: cpu
   spec:
     containers:
     - name: container
       image: hello:0.5
       resources:
         requests:
           cpu: 100m
         limits:
           cpu: 200m

노드포트나 로드벨런서 서비스를 통해 부하분산 서비스를 제작

apiVersion: v1
kind: Service
metadata:
 name: svc1
spec:
 selector:
    resource: cpu
 ports:
   - port: 8000
     targetPort: 8000
     nodePort: 30001
 type: NodePort

오토스케일링 그룹 설정

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-resource-cpu
spec:
  maxReplicas: 10
  minReplicas: 2
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: cpu1
  metrics:
  - type: Resource 
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

설정후 일부로  POD에 CPU사용량을 늘리면 평균치 확인하여 자동으로 POD를 늘린다.

 

상황종료시 줄어드는데 시간이 오래걸린다. 안정성때문일것이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고자료

 

728x90
반응형