前言
Kubelet 垃圾回收(Garbage Collection)是一个非常有用的功能,它负责自动清理节点上的无用镜像和容器。Kubelet 每隔 1 分钟进行一次容器清理,每隔 5 分钟进行一次镜像清理(截止到 v1.15 版本,垃圾回收间隔时间还都是在源码中固化的,不可自定义配置)。如果节点上已经运行了 Kubelet,不建议再额外运行其它的垃圾回收工具,因为这些工具可能错误地清理掉 Kubelet 认为本应保留的镜像或容器,从而可能造成不可预知的问题。
一、镜像回收
Kubernetes 对节点上的所有镜像提供生命周期管理服务,这里的『所有镜像』是真正意义上的所有镜像,而不仅仅是通过 Kubelet 拉取的镜像。当磁盘使用率超过设定上限(HighThresholdPercent)时,Kubelet 就会按照 LRU 清除策略逐个清理掉那些没有被任何 Pod 容器(包括那些已经死亡的容器)所使用的镜像,直到磁盘使用率降到设定下限(LowThresholdPercent)或没有空闲镜像可以清理。此外,在进行镜像清理时,会考虑镜像的生存年龄,对于年龄没有达到最短生存年龄(MinAge)要求的镜像,暂不予以清理。
1.1、主体流程
image.png
如上图所示