企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ### **性能指标** 说到K8S的性能指标,我们直观想到的有:K8S集群最多支持多少个节点、Pod,最多能创建多少个Namespace、Service等对象。 在K8S网站上,有如下一段描述: > Kubernetes v1.23支持高达5000节点。更准备地说,在使用Kubernetes时,应当遵循以下所有准则:每个节点不要超过110个Pod,集群不要超过5000节点,集群不要超过150000个Pod,不要超过300000个Container。 ![](https://img.kancloud.cn/46/2f/462fda8b4fca44beb4abc4736ca93b46_1921x476.png) 基本上可以理解为K8S的节点规模这个性能指标为5000。 但是如果判断K8S支持5000个节点?是在集群中能注册成功5000个节点就算支持?还是什么条件? 针对判断条件,K8S社区给出了一系列的SLI/SLO。即在一个集群下,当这些SLI的SLO满足时,那么我们就说K8S支持某个性能指标。 https://github.com/kubernetes/community/blob/master/sig-scalability/slos/slos.md 根据上述Kubernetes社区的介绍,目前正式(Official)的SLI有如下三个: ![](https://img.kancloud.cn/71/98/7198def4411f701c1bea4b2b6a81a36d_865x437.png) 前两个都是API调用延时(详情可参考[api_call_latency](https://github.com/kubernetes/community/blob/master/sig-scalability/slos/api_call_latency.md),第三个是Pod启动延时(详情可参考[pod_startup_latency](https://github.com/kubernetes/community/blob/master/sig-scalability/slos/pod_startup_latency.md))。上面的SLI是Service Level Indicator的缩写,翻译过来是“服务等级指标”(有些也译为“服务水平指标”),即对该指标的描述;SLO是Service Level Objective,翻译过来是“服务等级目标”(有些也译为“服务水平目标”),即该SLI怎么样才算达到。 > 我们可以简单理解为:节点规模、容器规模、Service规模就是K8S的性能指标,而上面的SLO就是这些性能指标是否满足的“判断条件”。 ### **测试方法** 上面我们有了“性能指标”,以及这些性能指标的“判断条件”。那么怎么测试? Kubernetes开源了Clusterloader2性能测试框架,帮助我们完成上面的测试过程,并且统计测试结果。 Clusterloader2主要提供了两个测试用例: (1)密度测试:该测试用例主要用来测试节点规模和容器规模的性能指标。它的大致思路是:在一个有N个节点的集群中,连续创建30*N个Pod,然后再删除这些Pod,然后跟踪这个过程中,上面的三个SLO是否满足。 (2)负载测试:该测试用例的主要思路是,向K8S进行大量的各种类型的资源创建、删除、LIST以及其他操作,然后跟踪这个过程中,上面的三个SLO是否满足。 ### **Kubemark集群** 另外,由于在大多数场景中,无法真实创建5000个节点,Kubernetes开源了一个kubemark项目,用来模拟真实节点。