[시작하기에 앞서]
웹 서버가 감당할 수 없는만큼 사용자 양이 크게 늘어났을 경우 처리 방법
1. Scale-up : 서버 자체 성능을 향상 시킨다.
- 서버를 더 많은 숫자의 사용자를 감당할 수 있도록 스케일 업 한다.
- 그러나 하드웨어에는 물리적으로 한계가 있다.
2. Scale-out : 동일한 서버를 여러 개를 운영한다.
- 2대 이상 증설하여 서버를 운영하는 것을 스케일 아웃 이라고 한다.
- 사용자들이 보내는 요청, 즉 트래픽을 균일하게 분배해주는 로드 밸런서가 필요하다.
▷ 로드 밸런싱 : 로드 밸런서가 모든 요청을 받아서 적절히 서버에 분배해주는 부하분산 역할을 하는 것이 서비스 객체이다.
▷ ReplicaSet : 서버의 갯수가 일정히 유지되도록 한다.
서비스가 운영되면서 사용자가 많이 접속하는 시간이 있다고 하면, 접속이 많지 않은 시간에 굳이 웹서버를 여러 대를 구동시킬 이유가 없다. 그래서 이런 것을 유동적으로 조정하는 것이 Auto Scale이다.
▷ HPA(HorizontalPodAutoscaler) : Pod를 수평으로 늘렸다 줄였다 하는 역할(쿠버네티스에서 Auto Scale이 가능하도록 하는 것)
▷ minReplicas : 최소 Replicas 개수
▷ maxReplicas : 최대 Replicas 개수
▷ targetCPUUtilizationPercentage : CPU 사용 %, 지정 퍼센트 이상이 되면 maxReplicas 숫자까지 증가한다.
▶ kubectl apply -f .\kuweb-hpa.yaml
horizontalpodautoscaler.autoscaling/kuweb-hpa created
▶ kubectl describe hpa kuweb-hpa
yaml 파일에 작성한 대로 잘 나온다.
kubernetes metric server 설치해보자.
https://github.com/kubernetes-sigs/metrics-server
GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in aut
Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. - GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container reso...
github.com
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
위의 명령어 입력하면 설치가 된다.
serviceaccount/metrics-server created
▶ kubectl get pods --all-namespaces
여태까지 안 보이던 쿠버테티스 시스템에서 사용하는 pod들을 볼 수 있다.
그 중 metrics-server(디플로이)- ~(레플리카셋)- ~(파드)
그러나 지금은 READY 가 0/1 인 상태
▶kubectl logs --namespace=kube-system metrics-server-블라블라
because it doesn't contain any IP SANs" node="docker-desktop"
에러 발생
▶kubectl edit deploy -n kube-system metrics-server
명령어 실행하면 메모장으로 yaml 파일이 열리는데 args 검색해서 설정 부분 밑에
--kubelet-insecure-tls 설정을 넣어야 한다. (띄어 쓰기로 할 것)
설정 변경 후 메모장 닫으면 deployment.apps/metrics-server edited 라고 나온다.
kubectl get pods --all-namespaces
kubectl get hpa
명령어로 CPU 사용률 등을 확인할 수 있다.
kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://kuweb-service; done"
이렇게하고 또 다른 poswershell에서 kubectl get hpa로 보면 계속해서 CPU 사용률이 증가하는 것을 볼 수 있다.
그리고 명령어 Ctrl + C로 종료하고 일정 시간이 지나면서 계속 확인해보면 TARGETS가 0%로 줄어들고 kuweb-deployment (Pod) 가 기본 설정 갯수까지 떨어진다.
'Programming > Cloud' 카테고리의 다른 글
DAY 180. 애플리케이션 배포 설정 (0) | 2022.02.19 |
---|---|
Day 178. 쿠버네티스(Kubernetes) - Service Object (0) | 2022.02.17 |
Day 177. 쿠버네티스(Kubernetes) - Deployment 사용 (0) | 2022.02.16 |
DAY 176. 쿠버네티스(Kubenetest) - Replica Set (0) | 2022.02.15 |
DAY 175. 쿠버네티스(Kubernetes) - Yaml 파일 (0) | 2022.02.14 |