Давайте предположим, что существует микросервис, представленный набором контейнеров, работающих в кластере K8s где-то в облаке , например
Oracle Kubernetes Engine (ОКЕ) . В какой-то момент мы хотим быстро провести стресс-тестирование конкретного компонента микросервиса или всего микросервиса. Итак, мы хотим знать, как он работает под нагрузкой, как он обрабатывает множество последующих запросов, поступающих от множества параллельных клиентов. Хорошей новостью является то, что у нас уже есть инструмент для этого. И работает. Это сам кластер Kubernetes.
Мы собираемся использовать задание Kubernetes для этого тестирования, описанного в следующем файле манифеста:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
apiVersion: batch/v1 kind: Job metadata: name: job-load spec: parallelism: 50 template: spec: containers: - name: loader image: eugeneflexagon/aplpine-with-curl: 1.0 . 0 restartPolicy: OnFailure |
В этом задании будет запущено 50 модулей, работающих параллельно и отправляющих по 100 запросов каждый на my_service через порт 8080 и путь my_path. Создание и начало работы с помощью вызова
1
|
kubectl apply -f loadjob.yaml |
Мы можем наблюдать все 50 стручков, созданных заданием, используя
kubectl get pods -l job-name = job-load
1
2
3
4
5
6
7
|
NAME READY STATUS RESTARTS AGE job-load-4n262 1 / 2 Completed 1 12m job-load-dsqtc 1 / 2 Completed 1 12m job-load-khdn4 1 / 2 Completed 1 12m job-load-kptww 1 / 2 Completed 1 12m job-load-wf9pd 1 / 2 Completed 1 12m ... |
Если мы посмотрим на журналы любого из этих стручков
1
|
kubectl logs job-load-4n262 |
Мы увидим что-то вроде следующего:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
[ 1 / 100 ]: http: //my_service.my_namespace:8080/my_path?1 --> <stdout> { "id" : 456 , "content" : "Hello world!" } [ 2 / 100 ]: http: //my_service.my_namespace:8080/my_path?2 --> <stdout> { "id" : 457 , "content" : "Hello world!" } [ 3 / 100 ]: http: //my_service.my_namespace:8080/my_path?3 --> <stdout> { "id" : 458 , "content" : "Hello world!" } .... real 0m 10 .04s user 0m 0 .00s sys 0m 0 .04s |
Это оно!
Опубликовано на Java Code Geeks с разрешения Евгения Федоренко, партнера нашей программы JCG . См. Оригинальную статью здесь: нагрузочное тестирование микросервиса. Kubernetes путь. Мнения, высказанные участниками Java Code Geeks, являются их собственными. |