美文网首页
K8S Pod之间的网速测试

K8S Pod之间的网速测试

作者: 蒙浩 | 来源:发表于2020-06-22 10:11 被阅读0次

    说到两个节点间的网速测试,现在最通用的工具是iperf。iperf有两种运行模式,一种是server模式,一种是client模式。当我们要测试两个节点的网速的时候,就需要在其中一台机器上开启server模式,另一台机器则开启client模式。开启server模式很简单,一条简单的命令就可以了:

    iperf -s
    

    开启iperf client的模式也比较简单

    iperf -c serverip -d -t xxxs
    

    这里就有个问题,对于两台实体机,那么,serverip很容易就可以获得,但是如果两个节点都是K8S中的pod呢?serverip不光不容易获得,很有可能会在server pod发生故障之后变化,这样,iperf工具就没有办法正常工作了。

    解决方法:
    如果想要server pod固定一个访问ip给 client pod, K8S给我们提供了一个很方便的功能,就是service这个概念,如果把server pod绑定在某个service上,那这些pod对K8S集群内就可以暴露service ip,而这个抽象出来的ip地址是不会变化的,所以这样就可以给client pod 提供固定的ip地址去连接了。

    server.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: broker-server
      namespace: default
    spec:
      externalTrafficPolicy: Cluster
      ports:
      - port: 5201
        protocol: TCP
        targetPort: 5201
      selector:
        app: broker-server
      sessionAffinity: None
    

    执行完上面的yaml文件后,可以获取到svc的信息:


    image.png

    我们可以看到,该service的ip地址,以及暴露的端口5201(iperf3 服务端默认暴露的端口)。
    也就是说,client pod只需要将serverip 替换为10.97.191.10(cluster ip)就可以了。那么问题就转换为如何让client pod获取到server pod的service cluster ip地址。
    这个地方我查阅了很多资料,最后发现,其实当service的yaml文件执行成功之后,在这之后启动的pod中会新增对应的环境变量:


    image.png
    那么,我们就可以通过获取环境变量的方式获取到这个ip地址了。
    看下效果:
    image.png

    客户端成功连接上了服务端!搞定!

    相关文章

      网友评论

          本文标题:K8S Pod之间的网速测试

          本文链接:https://www.haomeiwen.com/subject/ifuuxktx.html