目录
1.环境介绍
2.问题现象
3.问题原因
4.问题解决
环境介绍
#生产环境部署了一个包含100多台节点、版本为1.19的高可用k8s集群,详细信息如下:
[root@xx][~]
# kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.16", GitCommit:"xxx", GitTreeState:"clean", BuildDate:"xxxx", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
[root@xx][~]
# kubectl get node |wc -l
120
[root@xx][~]
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
问题现象
#之前在使用kubectl log命令的时候能看到日志信息,现在在使用命令的时候开始报错
[root@xxx][~]
# kubectl logs podA -n nsA
failed to get parse function: unsupported log format: "\n"
问题原因
# 通过翻阅相关博客,原因大体有两种:
A、docker配置文件中的一些设置格式不正确
B、pod的日志太大
问题解决
#问题原因已找到,接下来就是解决问题,目前方法也是有2种
#方法1 因为是生产环境,如果改动docker的配置文件后还得重启docker,对业务影响较大,所以使用无损生产的方式进行查看
[root@xxx][~]
# kubectl logs --tail=10 podA -n nsA
#下面就输出了正确的日志
2024-08-05T08:52:14xxxxx
xxxxx
xxxxx
#方法2 修改docker的配置文件,然后重启docker
cat /etc/docker/daemon.json
{
"insecure-registries": ["https://xxxxx"],
"log-driver": "json-file",
##### 修改下面或者移除
"log-opts": {
"max-size": "10m",
"max-file": "3",
}
}