今天想查询某个pod的日志,突然发现
$ kubectl logs pod p-xxxxxxxxxx
failed to get parse function: unsupported log format: "\n"
原因:由于之前发现容器的日志过大,如果在dockerd配置日志的大小,需要重启dockerd服务;
之后为了不重启docker服务,采用了折中的方法,写了一个脚本,定时清空容器的日志大于1G的文件。
for f in $(find /var/lib/docker/containers/*/*-json.log -size +1G);do echo " " > $f;done
可以看到利用空格“ ” 清空容器日志,造成容器的日志开头有一条空行的记录,这样会导致kubectl读取格式错误。
解决这个问题,可以使用--tail参数,指定查询的条数:
kubectl logs --tail=10 p-xxxxxxxxx
或清空日志脚本改为:
for f in $(find /var/lib/docker/containers/*/*-json.log -size +1G);do > $f;done
容器日志大小配置限额参考:
https://docs.docker.com/config/containers/logging/configure/
https://medium.com/@Quigley_Ja/rotating-docker-logs-keeping-your-overlay-folder-small-40cfa2155412