如何测试kubernetes集群网络的性能?

时间:2019-10-02 11:18:39

标签: amazon-web-services kubernetes kops

我在aws中有一个用kops创建的kubernetes集群。我正在尝试评估kubernetes集群的网络性能。我正在使用默认的kubernetes CNI kubenet。

networking:
    kubenet: {}

我已经使用kubernetes-perf-testnet-perf来评估kubernetes集群的网络性能。

我已经使用下面的命令来运行测试。

go run ./launch.go --iterations 2

生成的输出

MSS                                          , Maximum, 96, 160, 224, 288, 352, 416, 480, 544, 608, 672, 736, 800, 864, 928, 992, 1056, 1120, 1184, 1248, 1312, 1376, 1440,
1 iperf TCP. Same VM using Pod IP            ,36736.000000,2101,25486,36736,35636,36115,35631,6801,6544,7146,6565,6320,7252,6363,5707,5855,6034,36058,34098,36713,35625,34571,6341,
2 iperf TCP. Same VM using Virtual IP        ,30203.000000,5531,6072,5963,5294,6047,5879,5412,5456,5844,28499,29306,29289,30203,28516,5987,5460,5833,6029,4920,5027,5111,4700,
3 iperf TCP. Remote VM using Pod IP          ,664.000000,0,0,102,134,156,196,229,255,266,189,214,240,235,267,314,294,403,531,612,617,664,657,
4 iperf TCP. Remote VM using Virtual IP      ,778.000000,0,0,134,163,202,240,287,313,338,414,481,477,512,610,605,559,604,578,572,679,778,697,
5 iperf TCP. Hairpin Pod to own Virtual IP   ,29522.000000,974,547,19748,22219,24301,24043,25328,24531,4508,4471,5699,4339,4199,5001,5504,4974,15043,28658,29522,28902,28574,28956,
6 iperf UDP. Same VM using Pod IP            ,1592.000000,1592,
7 iperf UDP. Same VM using Virtual IP        ,1008.000000,1008,
8 iperf UDP. Remote VM using Pod IP          ,0.000000,0,
9 iperf UDP. Remote VM using Virtual IP      ,0.000000,0,
10 netperf. Same VM using Pod IP             ,3516.740000,3516.74,
11 netperf. Same VM using Virtual IP         ,0.000000,0.00,
12 netperf. Remote VM using Pod IP           ,422.430000,422.43,
13 netperf. Remote VM using Virtual IP       ,0.000000,0.00,

我不确定此输出实际上意味着什么。如何用该值确定我的k8s集群的网络是否正常?

我也尝试绘制此数据。enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

此脚本正在5种方案的TCP,UDP和NetPerf中测试MSS测试点中的iperf / netperf传输速度。

老实说,您在提供的Github链接中描述的所有内容。

Iperf是一种常用的网络测试工具,可以创建TCP / UDP数据流并测量承载它们的网络的吞吐量。它允许用户设置各种参数,这些参数可用于测试网络,或者用于优化或调整网络。

Netperf也是另一个很好的网络测试工具,PerfKitBenchmark套件也使用该工具来测试性能并相互比较各种云提供商。

更多信息,您可以找到here

在Github上,您有用于TCP和UPD的2x5 ipetf方案以及用于netperf的5x方案。

  

5个主要的网络流量路径是Pod IP与虚拟IP的组合   IP以及Pod是否位于同一节点/ VM上   遥远的豆荚。   -使用Pod IP的相同VM

     

使用其虚拟机Pod到Pod进行从Worker 1到Worker 2的流量测试   Pod IP。
  -使用群集/虚拟IP的同一VM

     

使用其虚拟机Pod到Pod进行从Worker 1到Worker 2的流量测试   服务IP(也称为其群集IP或虚拟IP)。
  -使用Pod IP的远程VM

     

使用Worker 2 Pod IP从Worker 3到Worker 2的流量测试。
  -使用群集/虚拟IP的远程VM

     

使用Worker 2群集/虚拟IP的Worker 3到Worker 2流量测试。
  -使用群集IP将相同的VM Pod发夹自身

关于CSV输出

MMS-最大分段大小。可以在here上找到有关它的更多信息。

  

TCP MMS示例TCP协议包括一种用于   协商要使用的最大段大小(MSS)的连接   通过连接。两端使用TCP标头中的OPTIONS字段   宣传拟议的MSS。选择的MSS较小   两端提供的值。

     

此协商的目的是避免延迟和吞吐量   数据包通过时碎片造成的减少   通过路由器或网关,然后在目标主机上重新组装。

     

TCP软件在连接期间公布的MSS值   设置取决于另一端是否是同一本地系统上的本地系统   物理网络(即系统具有相同的网络号)   或它是否在另一个(远程)网络上。

因此,对于每种情况(最大段大小),对于协议,脚本都以Mbit / sec为单位测量每个MSS数据点的传输速度。如果将其粘贴到excel并使用“文本到列”除以逗号,则此输出将具有更好的可见性。

在图中,您具有相同的值,只是为了获得更好的可见性。