Docker清理Kubernetes Pod日志的速度太快了



我正在运行许多CronJobs来自动化家庭服务器上的任务。当作业运行并且其 Pod 完成时,我可以使用kubectl logs <podName>查看日志,但是在一定时间(少于 5 分钟但超过 30 秒(后,Pod 仍然存在于 Kubernetes 中,但我得到:

unable to retrieve container logs for docker://<containerID>

我自己没有启用任何日志轮换,所以我假设 Docker 会在容器完成后清理日志。如何将 Docker 配置为保留这些容器日志,以便在作业完成后的较长时间(例如 1 天(后查看作业日志。

  • 集群配置器:kubeadm 1.17.0
  • Kubernetes 版本:1.17.0
  • 码头工人版本:18.06.3-ce
  • uname -r: 4.19.86-核心

您可以尝试在 Kubelet 中设置minimum-container-ttl-duration标志。这是成品容器在垃圾回收之前的最短年龄。

此外,在作业规范中,您可以指定 TTL

apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100

作业 pi-with-ttl 将有资格在完成后 100 秒自动删除。

使用 docker 修剪进行了一个简单的 CronJob

docker system prune -f -a --filter "until=168h"
docker volume prune -f

最新更新