You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

磁盘空间充足时如何启用Kubernetes Garbage Collection

Kubernetes 非磁盘满场景触发镜像GC配置方法

Kubernetes节点上的未使用镜像垃圾回收(GC)逻辑完全由kubelet组件管控,默认确实要等到镜像存储分区的磁盘使用率达到85%的默认高阈值才会启动清理,要在磁盘尚有剩余空间时就自动触发GC,只需要调整kubelet的GC阈值参数即可,不需要改动其他集群组件。

核心参数说明

和镜像GC触发逻辑直接相关的参数共有3个,所有参数都支持通过kubelet配置文件或者启动参数设置:

  • imageGCHighThresholdPercent:镜像GC触发高水位,单位为百分比,默认值85。当节点上用于存储容器镜像、容器可写层的文件系统使用率超过该值时,kubelet会立刻启动镜像GC流程。
  • imageGCLowThresholdPercent:镜像GC停止低水位,单位为百分比,默认值80。GC启动后会按顺序清理悬空镜像、无任何运行中Pod引用的闲置镜像,直到磁盘使用率回落到该值以下才会停止清理。
  • imageMinimumGCAge:闲置镜像可被回收的最短存活时长,默认值2分钟。只有拉取到本地后存在时长超过该值的闲置镜像才会被清理,避免误删刚拉取完成、还没被Pod挂载使用的新镜像。

举个简单的例子:如果你希望磁盘使用率到70%就自动启动GC,清理到60%就停止,只需要把高水位设为70、低水位设为60即可,完全不需要等磁盘用到80%以上的默认阈值。

配置操作步骤

生产推荐:通过kubelet配置文件修改

v1.10及以上版本的Kubernetes都推荐用独立配置文件管理kubelet参数,默认配置文件路径为/var/lib/kubelet/config.yaml,直接在文件中添加或修改对应参数即可,原有其他配置不需要改动:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# 此处省略其他原有配置
imageGCHighThresholdPercent: 70
imageGCLowThresholdPercent: 60
imageMinimumGCAge: 2m

修改完成后执行以下命令重启kubelet让配置生效:

systemctl restart kubelet

老版本兼容:通过kubelet启动参数修改

如果你的集群版本较老,或者习惯用启动传参管理kubelet配置,可以编辑kubelet的systemd服务配置(默认路径为/etc/systemd/system/kubelet.service.d/10-kubeadm.conf),在启动命令参数段添加以下配置:

--image-gc-high-threshold=70
--image-gc-low-threshold=60
--minimum-image-ttl-duration=2m

修改完成后执行以下命令重载配置并重启kubelet:

systemctl daemon-reload
systemctl restart kubelet

配置注意事项

  • 低水位阈值必须设置得比高水位阈值小,一般建议两个阈值之间留5%~10%的缓冲,否则kubelet会启动报错,差值过小还会导致GC刚停没多久又立刻触发,产生不必要的资源消耗。
  • 不建议把阈值设置得过低,比如高阈值低于50%的场景下,镜像会被频繁清理,后续Pod调度到节点时需要重新拉取镜像,大幅拉长Pod启动耗时,建议根据节点磁盘容量、日常镜像存储占比调整到60%~75%的高水位区间比较合理。
  • 如果节点使用containerd作为容器运行时,不需要额外修改containerd侧的配置,kubelet会直接通过运行时接口执行镜像清理,上述kubelet配置可以直接生效。
  • 如果需要临时手动触发一次全量镜像GC,不需要等待阈值触发,重启kubelet即可在启动阶段执行一次闲置镜像扫描清理,不过生产环境不建议频繁手动重启,靠阈值自动触发是最稳定的方案。

内容的提问来源于stack exchange,提问作者Jayashree Madanala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:36:56