天天看點

Kubernetes 1.16 與 1.14性能對比測試環境測試名額實驗結果總結

測試環境

  • 阿裡雲 ACK 1.16.6 3master 3worker(4c 8g) 獨占版, kubemark 模拟 100 個 node;
  • 阿裡雲 ACK 1.14.8 3master 3worker(4c 8g) 獨占版, kubemark 模拟 100 個 node。

測試名額

PodstartuplatencySaturate(飽和測試)

在 1 個 namespace 下建立 replicas 為 3000 的 deployment,記錄每個 pod 所需時間,按照時間大小排序後得到(50 90 99 百分點結果)。

Podstartuplatencylatency(存量測試)

在已建立 3000 個 pod 的場景下,連續建立 500 個 replicas 為 1 的 deployment,測試 pod 的建立時間。

吞吐量

在建立 pod 的過程中,測試每秒建立的 pod 個數。

api 響應時間

在整個測試過程(建立 pod,删除 pod)中,api-server 收到請求到響應的時間彙總,按 verb、resouce、scope、percentage 區分。

實驗結果

PodstartuplatencySaturate(ms)

1.16

PodStartupLatency create_to_schedule schedule_to_run run_to_watch schedule_to_watch pod_startup
50 1000 1044.237 1749.131 1749.184
90 1640.885 2401.273
99 2126.116 2958.44

1.14

1083.588 1836.33 1838.244
1790.928 2610.571 2611.449
2000 2852.53 4303.789
對比:

空載下運作3000個pod,50%pod啟動時間1.16相比1.14快5%左右。 90%的pod啟動時間,1.16啟動時間提升3%-10%,99%的pod啟動時間上1.16提升最大,速度提升25%-50%。在最壞情況下,1.16的效果明顯好于1.14.

Podstartuplatency(ms)

1004.569 1727.642 1727.662
1692.732 2414.719 2429.138
2124.746 2892.659 2897.378

1046.108 1772.073 1774.335
1772.192 2613.083
2260.846 2959.74

對比

在存量測試下,50% pod 啟動時間上, 1.16 效率提升 3%;90% 和 99% pod 的啟動時間上,1.16 效率提升 5%。總體來說 1.16 效果略微好于 1.14。

吞吐量(個數)

版本 average
19.354 20 23.6
24.2

  • 在建立 pod 過程中,50%、90% 和平均情況下,1.14 和 1.16 建立 pod 吞吐量相同;
  • 99 分位點情況,1.16 提升 3%。在最壞情況下,1.16 的效果優于 1.14。

api 響應延時(ms)

Resource Scope Verb Perc50 Perc90 Perc99
pods namespace DELETE 25.279 45.502 54.906
GET 25.17 45.307 49.837
LIST 25 45 49.5

(Pod)

nodes cluster PATCH 25.41 45.74 78.87

(Nodes)

25.432 45.779 76.445
namespaces 25.018 45.033 49.536

統計整個建立 Pod 和删除 Pod 過程中 api 響應時間,将其根據時間大小排序後對 pod 和 node 操作選取時間最長的三項進行對比。

對比可以發現,對 pod 和 node 操作的 api 時間,1.14 和 1.16 基本一緻:

  • 最壞情況下(99 分點)對 pod 的 delete 操作時間,1.14 相比 1.16 要快 30% 左右;
  • 對 node 的 PATCH 操作,1.16 相比 1.14 要快 40% 左右;
  • 對于其它 apicall(如 LIST 和 GET)二者并沒有明顯差距。

總結

總體來說,1.16 版本相對于 1.14 版本的主要提高在無狀态 Pod(Pod 不用挂載 configmap、secret 等 volume)的建立速度上:

  • 1.16 和 1.14 的 pod 建立時間都滿足 Kubernetes sig-scalability 定義的 SLA((99% 的已拉取好鏡像的 pod 啟動時間在 5s 内);
  • 但在最差情況下(99 分位點),1.14 版本的 Pod 建立速度接近 5s,表現差于同名額下 K8s 1.16 的 3s。

說明 1.16 版本更适用于對 pod 建立速度有要求(如彈性業務)的場景。

繼續閱讀