Kubernetes集群中垃圾回收(Garbage Collection)机制由kubelet完成。kubelet定期清理不再使用的容器和镜像,每分钟进行一次容器的GC操作,每五分钟进行一次镜像的GC操作。

容器(Container)的GC设置

能够被清理的容器只能是仅由kubelet管理的容器。在kubelet节点上通过docker run创建的容器不会被kubelet进行GC清理操作。

kubelet以下3个参数用于设置容器GC的条件:

  • --minimum-container-ttl-duration:已停止的容器在被清理之前最小的存活时间,例如“300ms”、“10s”、“2h45m”,超过此存活时间的容器将被标记为可被GC清理,默认值为1分钟。
  • --maximum-dead-containers-per-container:以Pod为单位的可以保留的已停止的(属于同一Pod的)容器集的最大数量。有时,Pod中容器运行失败或者健康检查失败后,会被kubelet自动重启,这将产生一些停止的容器。默认值为2。
  • --maximum-dead-containers:在本node上保留的已停止容器的最大数量,由于停止的容器也会消耗磁盘空间,所以超过该上限后,kubelet会自动清理已停止的容器释放磁盘空间,默认值为240。

如需关闭针对容器的GC操作,可以将--minimun-container-ttl-duration设置为0,将--maximum-dead-containers-per-container和--maximum-dead-containers设置为负数。

镜像(Image)的GC操作

Kubernetes系统中通过imageController和kubelet中集成的cAdvisor共同管理镜像的生命周期,主要根据本node的磁盘使用触发镜像的GC操作。

Kubelet的以下3个参数用于设置GC的条件:

  • --minimum-image-ttl-duration:不再使用的镜像在被清理之前最小的存活时间;
  • --image-gc-high-threshold:当磁盘使用率达到该值时,触发镜像的GC操作,默认值为90%;
  • --image-gc-low-threshold:当磁盘使用率降到该值时,GC操作结束,默认值是80%;

删除镜像的机制为:当磁盘使用率达到image-gc-high-threshold(例如90%)时触发,GC操作从最久未使用(Least Recently Used)的镜像开始删除,知道磁盘使用率将为image-gc-low-threshold(80%)或没有镜像可删为止。

Kubernetes-GC的更多相关文章

  1. kubernetes资源优化

    kubernetes资源优化方向 系统参数限制 设置系统内核参数: vm.overcommit_memory = 0 vm.swappiness = 0 sysctl -p #生效 内核参数overc ...

  2. Kubebuilder模块

    CRD创建 Group表示CRD所属的组,它可以支持多种不同版本.不同类型的资源构建,Version表示CRD的版本号,Kind表示CRD的类型 kubebuilder create api --gr ...

  3. kubernetes听云实战发布版

    ➠更多技术干货请戳:听云博客 听云线上使用k8s已经有一段时间了,下面对一些听云使用过程中的问题进行一些梳理,包括架构设计,安装部署和后期维护. 目录结构如下: 下面进入正题: 我们以听云系统的一个报 ...

  4. kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps

    本教程受Kubernetes官方最新更新的文档所触发,之所以没有做单纯的翻译是因为如下几个原因: Kubernetes官方此教程基于minikube,个人对minikube可能有偏见,觉得像玩具. M ...

  5. Kubernetes DNS 简介

    环境 $ sudo lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16 ...

  6. 讨论.NET Core 配置对GC 工作模式与内存的影响

    引出问题: Asp.net core应用在 Kubernetes上内存使用率过高问题分析 https://mp.weixin.qq.com/s/PqhUzvFpzopU7rVRgdy7eg 这篇文章中 ...

  7. kubernetes入门实践

    k8s中文文档 k8s概念比较多,有什么概念的疑惑的推荐看k8s中文文档. me的环境 操作系统:centos7 docker:1.12.6 环境跟me的不一致?不要慌,基本大部分操作都是行的通的. ...

  8. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)

    Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...

  9. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  10. kubernetes系列05—kubectl应用快速入门

    本文收录在容器技术学习系列文章总目录 1.使用kubectl 1.1 介绍 kubectl用于运行Kubernetes集群命令的管理工具. 1.2 语法 kubectl [command] [TYPE ...

随机推荐

  1. XPS 13 9360安装ubuntu 18

    XPS 13 9360安装ubuntu 18 标签(空格分隔): Linux 操作系统 1. 雷电口驱动bug 提示更新雷电口驱动bug(thunderbolt nvm for xps noteboo ...

  2. What is linux symbolic link

    Question :What is linux symbolic link In computing, a symbolic link (also symlink or soft link) is a ...

  3. no.1 github

    正是Github,让社会化编程成为现实. github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.它是由Chris Wanstrath ...

  4. HDU 4117 GRE Words

    这道题不难想到这样的dp. dp[字符串si] = 以si为结尾的最大总权值. dp[si] = max(dp[sj]) ,1.j < i,2.sj是si的子串. 对于第二个条件,是一个多模版串 ...

  5. Android(java)学习笔记24:自定义异常类

    1. 自定义异常: 考试成绩必须在0-100之间 很明显java没有对应的异常,需要我们自己来做一个异常 自定义异常 继承自Exception 继承自RuntimeException 下面是一个代码示 ...

  6. 【BZOJ3495】PA2010 Riddle

    题目大意 有\(n\)个城镇被分成了\(k\)个郡,有\(m\)条连接城镇的无向边.要求给每个郡选择一个城镇作为首都,满足每条边至少有一个端点是首都. 题目分析 每条边至少有一个端点是首都,每个郡至多 ...

  7. Maximum Profit

    Maximum Profit You can obtain profits from foreign exchange margin transactions. For example, if you ...

  8. 2017.9.12 初入HTML -----学习总结(二)

    接上:..... (4)标记可分为: 4.1单标记:(单标记仅单独使用就可以表达完整的意思) 基本语法:<标记名称/> 例如:<br/>实现换行的功能.<hr/>实 ...

  9. 剑指offer23 从上往下打印二叉树

    没有把队列的头部弹出,出现内存错误:

  10. 写在归程路上——2018ROBOCUP机器人世界杯中国赛

    写入自强队名单一年,认识Daniel十个月,第二次代表上海大学参加国赛,这一次是在浙江绍兴.坐在返沪的车上,心里担心着作业和明天的早课,写这篇博文来打发打发时间. ROBOCUP两个半比赛日,项目主要 ...