Kubernetes:如何自动清理未使用的图像

时间:2019-10-28 18:51:34

标签: docker kubernetes azure-aks

由于某些内部问题,我们需要在未使用的图像一经使用就立即将其删除。
我确实知道可以使用Garbage collection,但是它并没有提供我们需要的严格政策。 我遇到了this解决方案,但是

  1. 已弃用
  2. 它还删除了容器和可能的已装载卷

我正在考虑直接在节点上设置cron作业以运行docker prune,但我希望有更好的方法

不知道是否会有所作为,但我们正在使用AKS

2 个答案:

答案 0 :(得分:2)

这实际上并没有太大的作用,因为如果再次请求,它们将被重新下载。但是,如果您坚持要愚蠢的话,最好的选择是DaemonSet,它与安装在主机docker control socket hostPath上的主机一起运行,并如上所述运行docker system prune。您不能使用cron作业,因此需要自己编写循环,可能只是bash -c 'while true; do docker system prune && sleep 3600; done'之类的东西。

答案 1 :(得分:0)

唯一愚蠢的是您认为下载的图像是占用空间的唯一罪魁祸首。除了这些资源之外,还有许多资源会留下来并占用空间,尤其是在随着时间的推移进行 docker 构建时。许多中间容器和图像并不总是被清理干净,尤其是在构建错误之后。定期运行 docker system prune all 将释放这些资源和相关的磁盘空间,这在临时磁盘存储不那么容易增加的情况下非常有用。