我需要了解如何使用Kubernetes删除docker镜像。我使用Jenkins实现管道自动化,而Jenkins只能访问主节点,而不能访问从节点。因此,当我生成deploy时,一切都运行得很好,deploy使从属程序从存储库中拉出,然后我让所有东西都运行起来。
但是,如果Jenkins终止部署并尝试删除映像,它只会删除主节点上的映像,而不会删除其他从节点上的映像。所以我不想手动删除图像。
有没有办法从主节点删除从节点上的镜像?
发布于 2020-03-31 05:17:41
Kubernetes负责删除镜像,kubelet负责对节点进行垃圾回收,包括镜像删除,是可定制的。不建议通过外部方法删除图像,因为这些工具可能会通过删除预期存在的容器来破坏kubelet的行为。
Kubelet验证可用于图像的存储空间是否超过85%,在这种情况下,它会删除一些图像以腾出空间。可以在/var/lib/kubelet/config.yaml文件中自定义最小阈值和最大阈值
imageGCHighThresholdPercent是磁盘使用率的百分比,超过此百分比后将始终运行映像垃圾收集。
ImageGCHighThresholdPercent是磁盘使用率百分比,在此百分比之前从未运行过映像垃圾收集。要垃圾收集到的最低磁盘使用率。
默认值为:
ImageGCHighThresholdPercent 85
ImageGCLowThresholdPercent 80
发布于 2020-03-31 05:16:38
当磁盘使用率超过85% (默认设置)时,Kubelet最终会对旧的未使用图像进行垃圾回收。否则kubernetes不会提供用于删除图像的远程接口。
要做到这一点,需要对每个节点执行类似SSH的操作,或者运行一个具有管理底层容器运行时权限的Daemonset。参见Mr.Axe answer for the Docker/SSH variant。
发布于 2020-03-31 05:12:34
在主节点上,您可以将shell脚本/ansible playbook写入ssh到从节点中,并删除镜像-
docker images -f "dangling=true" -q | xargs --no-run-if-empty docker rmihttps://stackoverflow.com/questions/60934272
复制相似问题