使用网络包探测任务诊断网格内流量

服务网格ASM支持针对网格内部署的工作负载发起网络包探测任务,获取一定时段内Pod内的TCP流量包信息,并转储到Kubernetes集群节点机器上以供下载查看。本文介绍网络包探测任务诊断网格内流量。

背景信息

当应用接入服务网格后,由于应用本身的多样性,可能会产生某些流量不符合预期的问题,如请求头过大、请求没有遵守标准HTTP协议等。网络包探测任务可以快捷地针对工作负载抓取流量信息,辅助进行复杂流量问题的快速诊断。

前提条件

  1. 已创建ASM企业版或旗舰版实例,且版本为1.21.6.72及以上。具体操作,请参见创建ASM实例升级ASM实例

  2. 添加集群到ASM实例

操作步骤

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 网格诊断

  3. 网格诊断页面,单击服务网络包探测

  4. 服务网络包探测页面,单击创建任务,在弹出的对话框中,填写需要进行探测的Pod对应的Kubernetes集群命名空间pod名称,以及任务运行时长、任务运行时使用的tcpdump参数(有关如何使用tcpdump 参数,请参见tcpdump手册),以及捕获网络流量包后存储的保存文件名。单击确定

  5. 服务网络包探测页面,等待创建的任务的状态列变为Complete

  6. 根据任务的文件所在宿主机以及文件保存路径记录,找到对应的Kubernetes集群宿主机,并下载指定路径下的pcap文件,下载文件操作可以参考使用Workbench上传或下载文件

相关操作

删除探测包任务记录

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 网格诊断

  3. 网格诊断页面,单击服务网络包探测

  4. 服务网络包探测页面,找到需要删除的任务记录,在操作列单击删除。在弹出的对话框中单击确定

常用tcpdump参数

使用服务网络包探测时,您可以根据想要探测的流量性质,参考以下的说明来设置tcpdump参数。

  • 在客户端Pod内探测Sidecar与应用程序之间的流量时,可使用如下参数。

    # 将172.16.xx.xx替换为目标服务的Service IP
    -i lo dst port 15001 or src host 172.16.xx.xx
  • 在客户端Pod内探测Sidecar与目标服务之间的流量时,可使用如下参数。

    # 将192.168.xx.xx替换为目标服务的Pod IP
    -i any host 192.168.xx.xx
  • 在服务端Pod内探测Sidecar与应用程序之间的流量时,可使用如下参数。

    -i lo host 127.0.0.6
  • 在服务端Pod内探测Sidecar与客户端Pod之间的流量时,可使用如下参数。

    # 将192.168.xx.xx替换为客户端Pod IP
    -i any host 192.168.xx.xx