Kubernetes副本数量与性能

时间:2019-12-27 10:29:14

标签: laravel apache docker kubernetes google-cloud-platform

我刚接触Kubernetes,并非常喜欢它编排容器的能力。我假设当应用程序开始增长时,我可以简单地增加副本来满足需求。但是,既然我已经进行了一些基准测试,结果使我感到困惑。

我正在 GKE 上运行带有Apache 的Laravel 6.2,并以一台 g1-small 计算机作为节点。由于NodePort似乎很昂贵,因此我仅使用LoadBalancer服务来公开该应用程序。

使用的基准测试工具为wrkab。当副本增加到2个时,请求以某种方式下降。我希望请求数会增加,因为有2个容器可以满足请求。某处是否存在瓶颈,或者我的理解存在缺陷。希望有人能指出我所缺少的。

2 个答案:

答案 0 :(得分:2)

g1-small instance确实很小:您可以获得单个内核50%的利用率和1.7 GB的RAM。您没有描述应用程序的功能或配置文件的方式,但是,如果应用程序受CPU的限制,那么添加该进程的更多副本将完全无济于事。您仍然受到GCP为您提供的CPU数量的限制。如果您达到了实例的内存限制,这将大大降低性能,那么无论是交换还是副本之一,都会使OOM失效。

可能会影响该基准测试的另一件事是,有时在有限的时间内,您可以允许达到100%的CPU利用率。因此,如果您有一个实例并运行了第一个基准测试,则它可能使用了一个突发周期并看到了更高的性能,但随后在同一实例上重新运行第二个基准测试可能无法做到这一点。

简而言之,您不能仅仅增加Deployment上的副本数并期望获得更好的性能。您需要确定实际瓶颈在系统中的什么位置。诸如Prometheus之类的监视工具可以报告有关每个Pod CPU使用率的高级统计信息,可以提供帮助。在典型的由数据库支持的Web应用程序中,数据库本身是瓶颈,在Kubernetes级别上您无能为力。

答案 1 :(得分:0)

由于服务背后有两个Pod,因此kubernetes将负载平衡这两个Pod的请求,因此每个Pod处理的请求将减少。