本人空间链接:http://user.qzone.qq.com/29185807/blog/1460080827

源代码为k8s v1.1.1稳定版本号

2.2 ContainerGC

1、參数

代码在k8s.io\kubernetes\cmd\kubelet\app中

结构体变量

type KubeletServer struct {

...

MinimumGCAge                   time.Duration

MaxContainerCount              int

MaxPerPodContainerCount        int

...

}

默认參数

func NewKubeletServer() *KubeletServer {

return &KubeletServer{

...

MinimumGCAge:                1 * time.Minute,

MaxContainerCount:           100,

MaxPerPodContainerCount:     2,

...

}

}

flag參数

func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {

...

fs.DurationVar(&s.MinimumGCAge, "minimum-container-ttl-duration", s.MinimumGCAge, "Minimum age for a finished container before it is garbage collected.  Examples: '300ms', '10s' or '2h45m'")

fs.IntVar(&s.MaxContainerCount, "maximum-dead-containers", s.MaxContainerCount, "Maximum number of old instances of containers to retain globally.  Each container takes up some disk space.  Default: 100.")

fs.IntVar(&s.MaxPerPodContainerCount, "maximum-dead-containers-per-container", s.MaxPerPodContainerCount, "Maximum number of old instances to retain per container.  Each container takes up some disk space.  Default: 2.")

...

}

MinimumGCAge : minimum-container-ttl-duration 已经停止的容器实例在系统中上的ttl存活时间。

MaxContainerCount:maximum-dead-containers 系统中可以保存的最大已经停止容器实例数量。

MaxPerPodContainerCount:maximum-dead-containers-per-container 每一个容器最多在系统中保存的最大已经停止的实例数量。

2、传递參数

在1中我们看到參数已经构建。那么是怎么传递的

代码依然在k8s.io\kubernetes\cmd\kubelet\app 中

在func (s *KubeletServer) KubeletConfig() (*KubeletConfig, error) {

...

return &KubeletConfig{

...

MaxContainerCount:         s.MaxContainerCount,

MaxPerPodContainerCount:   s.MaxPerPodContainerCount,

MinimumGCAge:              s.MinimumGCAge,

...

}

}

构建了一个KubeletConfig

继续传递

构建了一个kubelet.ContainerGCPolicy

然后传递到了NewMainKubelet中

在函数的末尾调用了k.StartGarbageCollection()

3、工作流程

3.1构建

代码在k8s.io\kubernetes\pkg\kubelet\kubelet.go中

func NewMainKubelet(

然后

整个过程构建完毕了

然后从2中我们知道最后调用了例如以下代码。定期运行GarbageCollect

3.2 详细流程

代码在k8s.io\kubernetes\pkg\kubelet\container_gc.go中

我们看看结构体

我们看看evictableContainers函数,用于获取容器信息

以下是GarbageCollect。首先获取容器信息,然后依据之前传入的參数值,进行容器回收

龚浩华

qq 月牙寂 29185807

2016年4月8日

(版权声明:本文为作者原创。如需转载请通知本人。并标明出处和作者。擅自转载的,保留追究其侵权的权利。)

转载于:https://www.cnblogs.com/jzdwajue/p/7297729.html

【原创】k8s源代码分析-----kubelet(3)ContainerGC相关推荐

  1. 【原创】k8s源代码分析-----kubelet(8)pod管理

    本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...

  2. spark(1.1) mllib 源代码分析

    在spark mllib 1.1加入版本stat包,其中包括一些统计数据有关的功能.本文分析中卡方检验和实施的主要原则: 一个.根本 在stat包实现Pierxunka方检验,它包括以下类别 (1)适 ...

  3. Spark SQL 源代码分析系列

    从决定写Spark SQL文章的源代码分析,到现在一个月的时间,一个又一个几乎相同的结束很快,在这里也做了一个综合指数,方便阅读,下面是读取顺序 :) 第一章 Spark SQL源代码分析之核心流程 ...

  4. Spark SQL Catalyst源代码分析之TreeNode Library

    /** Spark SQL源代码分析系列文章*/ 前几篇文章介绍了Spark SQL的Catalyst的核心执行流程.SqlParser,和Analyzer,本来打算直接写Optimizer的,可是发 ...

  5. Spark SQL Catalyst源代码分析Optimizer

    /** Spark SQL源代码分析系列*/ 前几篇文章介绍了Spark SQL的Catalyst的核心运行流程.SqlParser,和Analyzer 以及核心类库TreeNode,本文将具体解说S ...

  6. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  7. Spark SQL之External DataSource外部数据源(二)源代码分析

    上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External Da ...

  8. UiAutomator喷射事件的源代码分析

    上一篇文章<UiAutomator源代码分析之UiAutomatorBridge框架>中我们把UiAutomatorBridge以及它相关的类进行的描写叙述,往下我们会尝试依据两个实例将这 ...

  9. Android应用程序内部启动Activity过程(startActivity)的源代码分析

    上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认Activity是在新的进程和任务中启动的:本文将继续分析在应用程序内部启动非默认Activit ...

  10. Akka FSM 源代码分析

    Akka FSM 源代码分析 萧猛 <simonxiao@qq.com> 啰嗦几句 有限状态机本身不是啥新奇东西,在GoF的设计模式一书中就有状态模式, 也给出了实现的建议.各种语言对状态 ...

最新文章

  1. 高级软件工程第二次作业
  2. select,InnoDB为啥会阻塞insert?
  3. echart 圆饼图 显示单位_玩转ECharts之实现“1/2圆的玫瑰图”
  4. Python 图像处理篇-利用opencv库展示本地图片实例演示
  5. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
  6. java base64转文件_JAVA将Base64转为文件并保存详解
  7. centos6.5搭建lnmp过程
  8. 【链表】判断一个链表是否是回文链表
  9. Decide what you want,and go after it with everything you got!
  10. 使用 Chrome Timeline 来优化页面性能 1
  11. 名人带货成潮流,直播电商是否走上了岔路?
  12. 大学英语计算机四级考试内容,大学英语四级考试大纲
  13. amcharts的使用
  14. 自动铅笔的简笔画怎么画,自动化简笔画图片大全
  15. 对产品经理来说,PMP和NPDP两个证书,哪一个权威性比较大?
  16. 为什么需要序列化总结
  17. HDU 2544 最短路 最短路入门
  18. android 获取sd卡目录失败_Android获取外置SD卡存储路径的方法
  19. gstreamer基础教程13-Playback speed
  20. 互联网时代,用小众语言对抗焦虑和内卷!

热门文章

  1. DFS csu1719 Boggle
  2. Oracle数据库to_date()和to_char()的相关
  3. scala 基础入门
  4. 在论坛中出现的比较难的sql问题:14(存储过程问题)
  5. AU更新 AUTOIT
  6. exchange功能在线测试
  7. 【高斯消元】[JSOI2008]球形空间产生器sphere
  8. git针对Android Studio的使用
  9. java:IO流学习小结
  10. ASP.NET以编程的方式动态的添加Css引用