calvinyu 标准输出有的,通过docker logs –tail 10 1564464dcc48 都可以看到业务日志的请求log

    huanggze 感谢大佬指点,目前已经解决
    问题原因:
    master节点设置的软链为:/var/lib/docker -> /data/docker
    worker节点设置的软链为:/var/lib/docker -> /work/docker
    fluent-bit设置的path为/data/docker
    但是业务pod全部分布在worker节点,所以也解释通了为啥只有系统级别(master节点pod)的日志,丢失了业务日志

    解决步骤:
    尝试在worker节点做软链:/var/lib/docker->/data/docker ->/work/docker 但是重启后仍然没有生效,用以下命令验证

    realpath $(docker info -f '{{.DockerRootDir}}') 
    /work/docker

    所以软链方式不行,只能迁移。

    1、systemctl stop docker
    2、迁移/work/docker 至 /data/docker
    3、确认软链与master节点一致: /var/lib/docker->/data/docker
    4、systemctl start docker

    打开ks,右下角日志查看,业务日志已收集成功。

    再次感谢@huanggze 提供清晰思路

    5 个月 后

    补充一个相同问题环境的解决办法:

    第一次安装时,把docker放在了扩展盘上,然后做了符号连接到 /var/lib/docker
    因此 kubesphere管理程序将/data/docker作为docker的目录传给了日志收集程序 fluentbit
    但新加的node未做符号连接(因为没有扩盘),docker的目录就是 /var/lib/docker
    因此在新加的节点上 fluentbit 通过 /data/docker这目录去收集日志时,发现是空的,那个目录估计是部署程序生成的,里面就放了一个空的container程序
    导致容器中能看到日志,kubesphere WEB页面上通过工作负载搜索不到日志。
    修改方法:
    kubectl cordon node-xxx
    kubectl drain node-xxx –delete-local-data –force -ignore-daemonsets
    systemctl stop docker.service

    rm -fr /data/docker
    mv /var/lib/docker /data/docker
    ln -s /data/docker /var/lib/docker

    systemctl start dokcer.service
    kubectl uncordon node-xxx

    检查验证命令

    systemctl status docker.service ==>应该是running
    kubectl describe node node-xxx
    realpath $(docker info -f ‘{{.DockerRootDir}}’ ==> 应该显示 /data/docker