Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何清理旧的未使用的Kubernetes图像/标签?_Kubernetes_Docker Registry_Google Kubernetes Engine - Fatal编程技术网

如何清理旧的未使用的Kubernetes图像/标签?

如何清理旧的未使用的Kubernetes图像/标签?,kubernetes,docker-registry,google-kubernetes-engine,Kubernetes,Docker Registry,Google Kubernetes Engine,为了简化部署和短期回滚,为每个要部署在Kubernetes上的新版本使用一个新的Docker图像标记是很有用的。如果没有清理,这意味着旧图像:标签将永远保留 如何列出Kubernetes容器使用的所有image:tag,以便找到所有旧的image:tag,这些旧的image:tag不用于从Docker注册表中自动删除它们 我的目标是在谷歌容器引擎(GKE)中删除谷歌容器注册表中未使用的图像。作为替代方法,你可以考虑让Kubernetes处理旧图像。 目前,ImageManager处理候选图像的回

为了简化部署和短期回滚,为每个要部署在Kubernetes上的新版本使用一个新的Docker图像标记是很有用的。如果没有清理,这意味着旧图像:标签将永远保留

如何列出Kubernetes容器使用的所有image:tag,以便找到所有旧的image:tag,这些旧的image:tag不用于从Docker注册表中自动删除它们


我的目标是在谷歌容器引擎(GKE)中删除谷歌容器注册表中未使用的图像。作为替代方法,你可以考虑让Kubernetes处理旧图像。 目前,ImageManager处理候选图像的回收。见:

垃圾收集是kubelet的一个有用功能,它将清理垃圾 未引用的图像和未使用的容器。库贝莱将表演 每分钟对容器进行垃圾收集和垃圾收集 每五分钟拍摄一次照片

配置通过以下两种方式进行控制:


可以调整高/低阈值,以强制按适合您的间隔收集图像。

要获取Kubernetes群集使用的所有图像的列表,可以运行shell脚本:

for image in $(kubectl get pods --all-namespaces --output=jsonpath='{..image}')
do
    echo $image
done

然而,目前似乎没有办法简单地从Google容器注册表中删除图像(请参见)

我不确定是否有一种文档化的方法来进行此类维护。然而,Openshift Origin试图通过修剪docker图像和与注册表交互来删除旧的blob来解决这个问题


我们已经在上下文中实现了它。要在github上实现这一点,您可以使用在守护程序集中运行的容器。这将清理集群中每个节点上所有未使用的映像。

对于最新版本的kubelet,请使用以下选项,因为--image gc high threshold和--image gc low threshold已被弃用:

--eviction-hard
--eviction-soft
更多详细信息,请访问:


这不只是群集节点上的本地映像,而不是Docker注册表中的映像吗?很抱歉,我没有在问题中正确指定它。更新了问题。用于清理特定日期之前推送的Google容器注册表映像的脚本如果您需要知道哪些映像仍然被集群引用,并且假设您使用部署而不是直接创建POD,您可以通过将“POD”替换为“rs”来查看ReplicaSet而不是POD在您的命令中。在一个带有出现计数()的排序列表中,上面的命令是:kubectl get pods--all namespaces-o jsonpath='{..image}'|tr-s'[:space:]''\n'| sort | uniq-c
--eviction-hard
--eviction-soft