# 테스트 구성도
1. 구성환경 설명
# 접속 환경
- 접속 URL : Nodeport로 구성되어 있으며, 접속 url은 [node의 ip주소]:[svc 서비스 포트]
- MasterNode : 192.168.137.50:31048 > php/Apache 웹서버 (부하 발생시 해당 서버에 부하를 발생 시켜야 WorkerNode1,2번으로 LB가 됨.)
- WorkerNode-01 : 192.168.137.105:31048 > php/Apache 웹서버
- WorkerNdoe-02 : 192.168.137.254:31048 > php/Apache 웹서버
# 부하 발생기
- Apache Jmeter tool 활용 (TPS 등 부하 테스트)
# 웹서버
- pod nginx 3개 생성
# HPA 조건
- CPU 사용량이 50% 이상 발생 시 pod가 최대 10개까지 증가
- 여기서 CPU 사용량이란, pod들의 전체 사용량을 평균으로 CPU 사용량이 50% 이상 발생 시 스케일 아웃 발생
2. 부하 테스트 진행
# Jmeter 테스트 환경 생성
2021.03.09 - [부하테스팅/Jmeter] - Jmeter를 활용한 부하테스트 (상)
2021.10.24 - [부하테스팅/Jmeter] - Jmeter를 활용한 부하테스트 (하)
# nginx pod 3개 생성 확인 및 Hpa 적용
2021.09.26 - [Kubernetes & Docker/Kubernetes (쿠버네티스)] - 쿠버네티스 - 오토스케일링 #
# Jmeter를 활용한 부하 테스트 수행, hpa 및 Scale-In, Out 모니터링
- 부하 시작 > node의 CPU 현황 파악
k8s-master-node@k8smasternode-Virtual-Machine:~/yaml/metrics-server$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8smasternode-virtual-machine 147m 7% 1385Mi 76%
k8sworkernode01-virtual-machine 2005m 100% 1156Mi 63%
k8sworkernode02-virtual-machine 581m 29% 1096Mi 60%
- pod 부하 현황 파악
k8s-master-node@k8smasternode-Virtual-Machine:~/yaml/metrics-server$ kubectl top pod
NAME CPU(cores) MEMORY(bytes)
php-apache-d4cf67d68-68dcm 213m 31Mi
php-apache-d4cf67d68-7n7kt 218m 34Mi
php-apache-d4cf67d68-bl84n 513m 40Mi
php-apache-d4cf67d68-d94zx 207m 28Mi
php-apache-d4cf67d68-gzqmj 225m 30Mi
php-apache-d4cf67d68-lhrg2 218m 31Mi
php-apache-d4cf67d68-m9m4n 210m 30Mi
php-apache-d4cf67d68-qnzqb 212m 38Mi
php-apache-d4cf67d68-rml6k 222m 36Mi
php-apache-d4cf67d68-rqc8d 218m 31Mi
- hpa 의 현황 파악 > 부하가 증가하면서 pod가 자동적으로 증가
k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 10 1 4m21s
k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get hpa -w
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 10 1 4m26s
php-apache Deployment/php-apache 222%/50% 1 10 1 4m31s
php-apache Deployment/php-apache 222%/50% 1 10 4 4m46s
php-apache Deployment/php-apache 192%/50% 1 10 5 5m1s
php-apache Deployment/php-apache 203%/50% 1 10 8 5m16s
php-apache Deployment/php-apache 127%/50% 1 10 10 5m31s
php-apache Deployment/php-apache 118%/50% 1 10 10 5m46s
php-apache Deployment/php-apache 111%/50% 1 10 10 6m1s
php-apache Deployment/php-apache 119%/50% 1 10 10 6m16s
php-apache Deployment/php-apache 121%/50% 1 10 10 6m31s
- Jmeter 결과 보고 > 12분53초 동안 테스트
- Summary Report
- 에러율은 2.85% 가 발생(전체 접속중에 2.85%는 커넥션 fail이 됐다는 의미겠지...)
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
- 모든 부하 테스트가 종료되고 hpa가 다시 Scale-In 되었는지 확인 > 다시 1개로 줄어듬
k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 10 1 22m
- 부하를 발생하여 자동적으로 hpa를 활용하여 pod를 10개까지 증가시켜 부하를 분산시키고, 다시 부하가 줄었을때, pod가 1개로 줄어드는것을 확인 하였다.
- 다음에는 더 많은 부하와 리소스를 가지고 테스트를 해보자...