rysinal

换成 kubespheredev/fluent-bit:v1.3.5-reload 试试,这是fluent bit 的bug,会导致container name hash conflict 使日志元信息丢失

    huanggze
    kubesphere命名空间下找不到1.3.5的镜像

    docker pull kubesphere/fluent-bit:v1.3.5-reload
    Error response from daemon: manifest for kubesphere/fluent-bit:v1.3.5-reload not found

    是否可以修改成官方的 fluent/fluent-bit:1.3.5

    docker pull fluent/fluent-bit:1.3.5

      rysinal

      kubespheredev dev dev dev
      kubespheredev
      kubespheredev
      😅
      kubespheredev/fluent-bit:v1.3.5-reload

      这周发布2.1.1 才会把 dev 去掉

        huanggze 眼拙了。。

        已更新了,但是还是一样的问题,业务容器重新部署 也没有产生日志,可否远程帮忙调试下,感谢
        管理员端(系统容器日志):

        业务账号端(业务容器):

        你们业务应用的日志是写到容器标准输出了吗?还是写到文件里面了?

          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