【问题标题】:Kubernetes: How to automatically clean up unused imagesKubernetes:如何自动清理未使用的镜像
【发布时间】:2019-10-28 18:51:34
【问题描述】:

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

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

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

不知道它是否有影响,但我们正在使用 AKS

【问题讨论】:

  • --eviction-hard 应该已经帮你搞定了!

标签: docker kubernetes azure-aks


【解决方案1】:

这并没有真正起到什么作用,因为如果再次请求它们,它们将被重新下载。但是,如果您坚持做一件愚蠢的事情,最好的办法是使用 DaemonSet,它与主机 docker 控制套接字 hostPath-mounted 一起运行并运行 docker system prune,正如您所提到的。您不能使用 cron 作业,因此您需要自己编写循环,可能只是 bash -c 'while true; do docker system prune && sleep 3600; done' 或其他东西。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 你假设我的(愚蠢的)假设是这样做是为了释放空间,但实际上更多的是关于安全性和公司合规性。
    猜你喜欢
    • 2016-07-24
    • 2019-09-11
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多