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

饭宝  金牌会员 | 2024-12-25 06:47:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

如何部署 DeepFlow

可直接参考官网链接部署。
注:官网中利用 Docker 以 AllinOne 形式部署只适用于暂时测试,因为 deepflow-server 需通过 k8s lease 进行选主,否则只能利用单副本
部分 pod 没有获取到,如何排查

首先,部署完成后,等待 deepflow 命名空间下各个 pod 都处于 Running 且 1/1 的状态后,通过 deepflow-ctl 检查 deepflow-agent 是否注册成功,具体查看STATE值是否为NORMAL:
  1. [root@deepflow-demo ~]# deepflow-ctl agent list
  2. ID   NAME                          TYPE       CTRL_IP          CTRL_MAC            STATE     GROUP     EXCEPTIONS                REVISION        UPGRADE_REVISION   
  3. 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,原因可能有以下几点:

    • 没有流量,例如查询的 nginx pod,在面板右上角时间范围内,并没有进来或出去的流量
    • 利用宿主机网络,例如查询的 nginx pod 利用了 hostNetwork 宿主机网络,在 cbpf 收罗网卡数据时,只能把此 pod ip 作为宿主机 ip 识别
    • 没有上层资源,deepflow 录入 pod 时,对应 pod 必须有一个上层资源,例如 deploy、daemonset 等,如 kind 范例就是 pod,则无法录入(以为 kind: pod 没有意义)
    • 无法识别自定义资源,即对 pod 进行封装,自定义了上层资源。比如内部创建了一个 kind 范例非 k8s 自带的资源

  • 对于以上情况,对应的办理方式:

    • 打流即可,例如手动 curl 一下
    • 截至目前 v6.6 lts 版本,还没有办法,不过后续版本可能会实现区分
    • 必须须要一个上层资源
    • 代码中,只能加载 k8s 默认资源。或者对 deepflow 进行二开,可参考此 issue 关联的 pr

  • 假如以上情况都不属于,须要通过deepflow-ctl手动打开 deepflow-server 的 debug 日志,在日志中grep对应 pod name 即可

    • deepflow-ctl ingester -i [server pod ip] loglevel set debug
    • 开启后在对应 server pod log 中 grep 没有展示的pod name、will query、api_resources: 后几十行
    • 查询后记得该归去:deepflow-ctl ingester -i [server pod ip] loglevel set info


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表