部署 DeepFlow 后部分 Pod 资源没有识别

如何部署 DeepFlow

可直接参考官网链接部署。
注:官网中使用 Docker 以 AllinOne 形式部署只适用于临时测试,因为 deepflow-server 需通过 k8s lease 进行选主,否则只能使用单副本

部分 pod 没有获取到,如何排查

首先,部署完成后,等待 deepflow 命名空间下各个 pod 都处于 Running 且 1/1 的状态后,通过 deepflow-ctl 检查 deepflow-agent 是否注册成功,具体查看STATE值是否为NORMAL

[root@deepflow-demo ~]# deepflow-ctl agent list
ID   NAME                          TYPE       CTRL_IP          CTRL_MAC            STATE     GROUP     EXCEPTIONS                REVISION        UPGRADE_REVISION   
55   deepflow-demo-V1              K8S_VM     x.x.x.x          xx:xx:xx:xx:xx:xx   NORMAL    default                             v6.6 11418

  • 在确认 agent 状态正常的情况下,查看 grafana 面板 workload 变量或使用 auto_instance 过滤时,找不到某个具体的 pod,原因可能有以下几点:

    1. 没有流量,例如查询的 nginx pod,在面板右上角时间范围内,并没有进来或出去的流量
    2. 使用宿主机网络,例如查询的 nginx pod 使用了 hostNetwork 宿主机网络,在 cbpf 采集网卡数据时,只能把此 pod ip 作为宿主机 ip 识别
    3. 没有上层资源,deepflow 录入 pod 时,对应 pod 必须有一个上层资源,例如 deploy、daemonset 等,如 kind 类型就是 pod,则无法录入(认为 kind: pod 没有意义)
    4. 无法识别自定义资源(CRD)
  • 对于以上情况,对应的解决方式:

    1. 打流即可,例如手动 curl 一下
    2. 截至目前 v6.6 lts 版本,还没有办法,不过后续版本可能会实现区分
    3. 必须需要一个上层资源
    4. 企业版可对 CRD 资源进行定制;开源版只能加载 k8s 默认资源。或者对 deepflow 进行二开,可参考此 issue
  • 如果以上情况都不属于,需要通过deepflow-ctl手动打开 deepflow-server 的 debug 日志,在日志中grep对应 pod name 即可

    1. deepflow-ctl ingester -i [server pod ip] loglevel set debug
    2. 开启后在对应 server pod log 中 grep 没有展示的pod namewill queryapi_resources: 后几十行
    3. 查询后记得改回去:deepflow-ctl ingester -i [server pod ip] loglevel set info
posted @   一看就会  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
点击右上角即可分享
微信分享提示