智匯華云 | 如何進行大規模Kubernetes集群測試
前言
Kubernetes作為當下應用最廣泛的容器集群管理系統,為容器化的應用提供資源調度、部署運行、滾動升級、擴容縮容等功能。容器集群管理給業務帶來了便利,但是隨著業務的不斷增長,應用數量可能會發生爆發式的增長,這都對 Kubernenetes 集群的快速擴縮容和大規模大壓力下的集群管理等能力提出了更高的要求。
測試工具介紹
kubemark 是 K8s 官方給出的性能測試工具,能夠不受任何資源限制,模擬出一個大規模 K8s 集群。kubemark可以將在external 集群運行的hollowpod,注冊成為測試集群的hollow node,實現增加node規模的作用。 該hollow node具備被測試集群調度和運行pod的能力。
kubemark cluster為測試集群
k8s cluster為運行hollowpod的擴展集群
clusterloader2是一個自帶yaml的kubernetes負載測試工具,位于perf-tests工具集項目之中,是官方的k8s可擴展性和性能測試框架。目前可用的指標為
APIAvailabilityMeasurement
APIResponsivenessPrometheusSimple
APIResponsivenessPrometheus
CPUProfile
EtcdMetrics
MemoryProfile
MetricsForE2E
PodStartupLatency
ResourceUsageSummary
SchedulingMetrics
SchedulingThroughput
Timer
WaitForControlledPodsRunning
WaitForRunningPods
Sleep
測試目標
大規模K8s集群重要的特性是可擴展性和性能穩定性。我們可以使用SLI(Service Level indicators)和 SLO(Service Level Objectives)來定義集群測試的標準和目標。
Kubernetes社區定義多種SLIs/SLOs以便衡量集群的服務質量,在本文的測試中主要關注以下幾點:
測試方案
kubernetes管理面采用3 master進行部署,etcd采用ssd進行存取數據。clusterloader2將發起density負載測試。prometheus將對集群指標進行采集,通過grafana進行更好的數據展示。
受限于External Cluster的資源限制,本次我們將進行100節點、200節點、500節點的測試,觀察集群性能是否達標。
測試環境信息
1、Kubernetes版本與規格
采用華云云原生軟件上的Kubernetes v1.18 版本,集群采用 3 master 節點和模擬 node節點。
2、Master節點配置
CPU: 32C
MEMORY: 125G
ETCD DISK? : Type:SSD,Size:120GB
3、External cluster配置: 8C16G * 3
4、參數調優
kubelet參數默認情況下,最大pod數量為110。太小會導致模擬時每個節點的pod數量有限。
測試結果
分別進行100節點、200節點和500節點規模性能測試,其最大峰值時數據如下
1 Mutating API call latency(threshold=1s)
2?Read-only API call latency(scope=cluster, threshold=30s)
3 PodStartupLatency
總結
本文介紹了大規模 Kubernetes集群的測試方法,并設計測試方案和測試目標對模擬的大規模 K8s 集群進行了多輪的測試。
在華云云原生集群上,Kubernetes 控制面的API調用延遲和Pod啟動延遲均維持在較低值,符合Kubernetes社區的SLIs/SLOs指標,華云云原生集群能夠穩定支持和管理大規模節點。