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. June 12th 2017 Week 24th Monday

    All the splendor in the world is not worth a good friend. 人世间所有的荣华富贵都比不上有一个好朋友. It's great to have a ...

  2. March 7 2017 Week 10 Tuesday

    Age is a very high price to pay for maturity. 年纪是成熟的代价. A high price, indeed a high price. It is bes ...

  3. 我的HTML总结之HTML发展史

    HTML是Web统一语言,这些容纳在尖括号里的简单标签,构成了如今的Web. 1991年,Tim Berners-Lee编写了一份叫做“HTML标签”的文档,里面包含了大约20个用来标记网页的HTML ...

  4. Android(java)学习笔记54:Android 调用Vibrator震动功能

    1. 之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; i ...

  5. BZOJ4566:[HAOI2016]找相同字符(SAM)

    Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两 个子串中有一个位置不同. Input 两行,两个字符串s1,s2,长度分别 ...

  6. ettercap_缺少组件问题

    原因:缺少WinPcap组件解决:安装即可

  7. 运行出现Server Tomcat v8.5 Server at localhost failed to start.和A child container failed during start

    出现问题: 解决方法: 1.看servlet文件中的@WebServlet“()”,里面是否少了/字符,如图: 加上即可,有问题随时留言,欢迎您的咨询!

  8. Java运行时异常与一般异常以及错误的异同

    Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常,JAV ...

  9. hive中使用rcfile

    (1)建student & student1 表:(hive 托管)create table student(id INT, age INT, name STRING)partitioned ...

  10. PHP IDE PHPStorm配置支持友好Laravel代码提示方法

    PHPStorm神器可以支持更友好的laravel框架代码提示(点击查看),只需要执行如下才做:第一步:在项目的composer.json中添加如下一行 代码如下: "require&quo ...