我设置了一个带有2个强大物理服务器(32核+ 64GB内存)的kubernetes集群。除了我观察到的糟糕的网络性能外,一切都运行得非常顺利。
作为比较:我直接在这样的物理机器上运行我的服务(一个实例)。让客户端计算机在同一网络子集中调用该服务。 rps可以轻松达到10k。当我在kubernetes版本1.1.7中放置完全相同的服务时,启动了一个pod(实例)服务,并在服务yaml文件中通过ExternalIP公开服务。使用相同的客户端,rps降至4k。即使在我切换到kube-proxy的iptable模式之后,它似乎也没什么帮助。
当我搜索时,我看到了这个文件https://www.percona.com/blog/2016/02/05/measuring-docker-cpu-network-overhead/
似乎docker port-forwarding是网络瓶颈。而docker的其他网络模式:如--net = host,桥接网络或容器共享网络则没有这样的性能下降。想知道Kubernetes团队是否已经意识到此类网络性能下降?由于码头工人集装箱由Kubernetes发起和管理。反正有没有调整kubernetest使用其他网络模式的docker?
答案 0 :(得分:2)
您可以在配置群集时以多种不同方式配置Kubernetes网络,以及基于每个pod的几种不同方式。如果您想尝试验证docker网络安排是否存在问题,请在您的pod规范中将hostNetwork
设置为true,然后再试一次(example here)。这相当于docker --net = host setting。