智汇华云 | 如何进行大规模Kubernetes集群测试

砍柴网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

前言

Kubernetes作为当下应用最广泛的容器集群管理系统,为容器化的应用提供资源调度、部署运行、滚动升级、扩容缩容等功能。容器集群管理给业务带来了便利,但是随着业务的不断增长,应用数量可能会发生爆发式的增长,这都对 Kubernenetes 集群的快速扩缩容和大规模大压力下的集群管理等能力提出了更高的要求。

测试工具介绍

kubemark 是 K8s 官方给出的性能测试工具,能够不受任何资源限制,模拟出一个大规模 K8s 集群。kubemark可以将在external 集群运行的hollowpod,注册成为测试集群的hollow node,实现增加node规模的作用。 该hollow node具备被测试集群调度和运行pod的能力。

智汇华云 | 如何进行大规模Kubernetes集群测试

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集群测试

测试方案

智汇华云 | 如何进行大规模Kubernetes集群测试

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指标,华云云原生集群能够稳定支持和管理大规模节点。

随意打赏

提交建议
微信扫一扫,分享给好友吧。