饭宝 发表于 2024-12-25 06:47:35

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

如何部署 DeepFlow

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

首先,部署完成后,等待 deepflow 命名空间下各个 pod 都处于 Running 且 1/1 的状态后,通过 deepflow-ctl 检查 deepflow-agent 是否注册成功,具体查看STATE值是否为NORMAL:
# 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 11418https://img2024.cnblogs.com/blog/2785189/202412/2785189-20241219223805616-758044626.png

[*]在确认 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 loglevel set debug
[*]开启后在对应 server pod log 中 grep 没有展示的pod name、will query、api_resources: 后几十行
[*]查询后记得该归去:deepflow-ctl ingester -i loglevel set info


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 部署 DeepFlow 后部分 Pod 资源没有识别