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. 在左側導航欄單擊集群拓撲,然后在WorkloadPod視圖下展開對應命名空間。

    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數據