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]