我正在运行许多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