控制台日志查询功能无法打印日志
huanggzeK零SK壹S
- 已编辑
rysinalK零S
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 提供清晰思路
huanggzeK零SK壹S
补充一个相同问题环境的解决办法:
第一次安装时,把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