Kubernetes常见优化之垃圾回收

为了使kubernetes更高效更稳定,往往需要针对操作系统层或Kubernetes本身在内存调度策略、磁盘使用策略、网络策略等方面进行优化,本节内容将讲述垃圾回收机制。

随着应用更新迭代,Kubernetes集群中会产生很多无用的镜像和容器,于是在Kubelet引入了GC(垃圾收集)机制,容器GC间隔为1分钟,镜像GC间隔为5分钟,当发现集群中存在垃圾镜像或容器时,kubelet就会把它们清除。

但是这种机制也会产生一些问题,比如在私有离线部署环境中,某个节点相关的镜像被清理后,无法再启动容器,也无法拉取镜像。为了防止遇到这种故障,建议搭建私有仓库或者关闭GC

容器的GC设置

能够被清理的容器只能是仅由kubelet管理的容器,通过 docker run 创建的容器不会被kubelet进行GC,以下3个参数用于设置容器GC:

参数 说明
--minimum-container-ttl-duration
已停止的容器在被清理前的最小存活时间,如“50ms/30s/2h5m”,超出时间范围的容器将被标记为可被GC。默认“1m”,0表示禁用。
--maximum-dead-containers-per-container
单个Pod中可保留的已停止的容器的最大数量,容器运行失败或健康检查失败后,可能会被自动重启。默认2,负数表示禁用。
--maximum-dead-containers
在本节点上保留的已停止容器的最大数量,超过该阀值时,kubelet会自动清理已停止的容器释放磁盘空间。默认240,负数表示禁用。

镜像的GC设置

Kubernetes通过imageController和kubelet的cAdvisor共同管理镜像的生命周期,主要根据本节点的磁盘使用情况触发镜像的GC操作,以下3个参数用于设置GC:

参数 说明
--minimum-image-ttl-duration 不再使用的镜像在被清理之前最小的存活时间。
--image-gc-high-threshold 磁盘使用率达到该值时,触发GC,默认90%。
--image-gc-low-threshold 磁盘使用率降到该值或无镜像可删时,停止GC,默认80%。

原创文章禁止转载:技术学堂 » Kubernetes常见优化之垃圾回收

精彩评论

7+3=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏