(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
반응형