1. 程式人生 > >Kubernetes下web服務的效能測試三部曲之三:橫向擴容

Kubernetes下web服務的效能測試三部曲之三:橫向擴容

本章是《Kubernetes下web服務的效能測試三部曲》系列的終篇,之前我們用AB和JMeter兩種工具壓測了k8s環境下的Tomcat,並通過調整記憶體和CPU來驗證縱向擴容的效果,本章我們來驗證橫向擴容對吞吐量的影響;
本文地址:http://blog.csdn.net/boling_cavalry/article/details/79336661

前文列表

基本環境資訊

基本環境的配置,與第一章一致,Tomcat的deployment配置如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcathost
spec:
replicas: 1 template: metadata: labels: name: tomcathost spec: containers: - name: tomcathost image: bolingcavalry/k8stomcatdemo:0.0.5 tty: true ports: - containerPort: 8080 resources: requests: memory: "512Mi" cpu: "100m"
limits: memory: "512Mi" cpu: "100m"

注意,本章實戰的Pod記憶體為512M,因為256M的Pod吞吐率太低,從啟動到預熱(用來應對JIT的第一次測試,丟棄成績),都會耗費大量時間,因此用512M可以節省測試時間;

請按照上述配置將deployment和service在k8s環境啟動起來,啟動命令如下,在tomcat.yaml檔案所在目錄下:

kubectl create -f tomcat.yaml,tomcat-svc.yaml

橫向擴容,將Pod數從1增加到8

將Pod數從1增加到8,執行以下命令即可:

kubectl scale deployment tomcathost --replicas=8

因為新的Pod建立、啟動、初始化等操做,需要等待幾分鐘再進行測試;

繼續繼續AB和JMeter測試,然後再分別將replicas引數設定為4、2、1,得到結果如下表所示:

記憶體 CPU Pod數 吞吐率(AB) 吞吐率(JMeter)
512M 0.1 1 38.17 38.00
512M 0.1 2 62.92 78.67
512M 0.1 4 98.11 112.91
512M 0.1 8 246.51 277.77


以上的結果可以發現,隨著Pod數的翻倍,吞吐量也是線上性增長的,增長的效果接近翻倍,也就是說橫向擴容並沒有出現縱向擴容時的那種單機極限的瓶頸,在節點數量得以保證的情況下,可以通過橫向擴容來提升吞吐量(因為硬體資源的限制,我這裡只能將Pod擴充套件到8個,如果您有條件可以繼續測試下去);

節省測試時間的方法

正常的測試順序是副本數從1到2,然後從2到4,再從4到8,這樣每次擴容後都會有容器建立,都要等待Pod建立和初始化,然後還要預熱(避免JIT的影響),所以,本次實戰我的順序是一開始直接擴容到8個Pod,然後等待建立和初始化,再正常預熱,用AB和JMeter測試Pod等於8的吞吐量,然後將Pod數從8縮減到4,縮減後剩下的4個Pod都是縮減之前用過的,不需要再預熱就能直接壓測了,這樣從8到4,從4到2,從2到1的幾次縮減都不需要等待初始化和執行預熱了;

和上一章的資料差異

細心的讀者會發現,本章在Pod記憶體為512M的時候,吞吐量的數字和上一章是不同的,因為本章使用的硬體資源和上一章有所不同所致,但是實戰的軟體環境、步驟和映象都是完全相同的;

至此,《Kubernetes下web服務的效能測試三部曲》就全部結束了,希望能對你您在K8S環境下的擴容和壓測都有所幫助,也歡迎您的關注和來信探討:[email protected]