本文经作者张文娟授权发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
概述
随着容器技术的发展,容器服务已经成为行业主流,然而想要在生产环境中成功部署和操作容器,关键还是容器编排技术。市场上有各种各样的容器编排工具,如Docker原生的Swarm、Mesos、kubernetes等,其中Google开发的kubernetes因为业界各大巨头的加入和开源社区的全力支撑,成为了容器编排的首选。
简单来讲,kubernetes是容器集群管理系统,为容器化的应用提供资源调度、部署运行、滚动升级、扩容缩容等功能。容器集群管理给业务带来了便利,但是随着业务的不断增长,应用数量可能会发生爆发式的增长。那在这种情况下,kubernetes能否快速地完成扩容、扩容到大规模时kubernetes管理能力是否稳定成了挑战。
因此,结合近期对社区kubernetes性能测试的调研和我们平时进行的k8s性能测试实践,和大家探讨下kubernetes性能测试的一些要点,不足之处还望大家多多指正!
测试目的
如上kubernetes架构图所示,无论外部客户端,还是kubernetes集群内部组件,其通信都需要经过kubernetes的apiserver,API的响应性决定着集群性能的好坏。
其次,对于外部客户而言,他只关注创建容器服务所用的时间,因此,pod的启动时间也是影响集群性能的另外一个因素。
目前,业内普遍采用的性能标准是:
API响应性:99%的API调用响应时间小于1s。
Pod启动时间:99%的pods(已经拉取好镜像)启动时间在5s以内。
“pod启动时间”包括了ReplicationController的创建,RC依次创建pod,调度器调度pod,Kubernetes为pod设置网络,启动容器,等待容器成功响应健康检查,并最终等待容器将其状态上报回API服务器,最后API服务器将pod的状态报告给正在监听中的客户端。
除此之外,网