Kubernetes监控支持对容器网络进行抓包,本文介绍如何创建抓包命令并查看抓包数据。

前提条件

网络抓包需要Kubernetes监控组件ack-arms-cmonitor版本在1.1.4或以上。您可以在容器服务管理控制台目标集群下的运维管理 > 组件管理页面升级组件版本。

背景信息

TCPDump是常用的一种网络诊断和分析工具,当软件发生网络问题的时候,通常使用TCPDump工具对网络进行抓包分析确定根因。在容器环境中抓包可能会遇到以下问题:
  • 抓包需要使用exec命令进入容器,但网络异常时,容器不一定处于运行状态,您可能无法使用exec命令进入容器。
  • 容器环境不支持运行Shell命令,例如Shelless容器。
  • 容器可能没有预装TCPDump工具。

Kubernetes监控的网络抓包功能支持TCPDump抓包功能,支持命令动态下发、用户免登录容器,且不需要预装TCPDump工具。

创建抓包命令

  1. 登录ARMS控制台,在左侧导航栏单击Kubernetes监控
  2. Kubernetes监控页面顶部选择目标地域,然后单击目标集群名称。
  3. 进入网络抓包页面。
    方式一:

    在左侧导航栏单击网络抓包

    方式二:
    1. 在左侧导航栏单击集群拓扑,然后在Workload或Pod视图下展开对应命名空间。

    2. 将鼠标悬浮于目标节点上,然后单击抓包

      在右侧页面弹出抓包面板。

  4. 单击新建抓包命令,设置抓包参数,然后单击确定
    新建抓包命令
    参数 说明
    命名空间 需要抓包的应用所在的命名空间。
    应用类型 需要抓包的应用类型。
    应用名称 需要抓包的应用名称。
    Pod Pod名称。
    Container 容器名称。
    网卡 需要抓包的网络设备。
    src host 来源Host,不填则对所有来源Host进行抓包。
    src port 来源Port,不填则对所有来源Port进行抓包。
    包长度 单个包的最大长度。
    dst host 目标Host,不填则对所有目标Host进行抓包。
    dst port 目标Port,不填则对所有目标Port进行抓包。
    预览 显示对应的抓包语句。
    时长 抓包时长,单位为秒。
    输出形式 选择抓包完成后数据的输出形式。
    • 流式输出:仅支持在抓包任务执行后立即查看。
    • Pcap文件:抓包完后您可以随时下载抓包数据,方便后续使用Wireshark等工具进行数据分析。

查看抓包数据

网络抓包页面显示了所有抓包任务。抓包数据

查看流式输出数据

  1. 类型流式状态初始化的抓包任务右侧单击执行
  2. 查看流式输出数据。
    说明 当前页面关闭后对应的数据不支持再次查看。
    流式输出

查看Pcap文件

  1. 类型Pcap文件的抓包任务右侧单击下载
  2. 使用Wireshark工具打开Pcap文件并分析抓包数据。Pcap数据