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