跳至主要内容

博文

目前显示的是 三月, 2019的博文

kubernetes 源码阅读--垃圾回收

Table of Contents 1. 前言 1.1. 代码参考 1.2. 简要说明 1.3. gc 设计文档 1.4. gc 触发条件 1.5. 代码详解 1.5.1. pod 的删除 1.5.2. pod container deletor 1.5.3. kuberuntime gc 1  前言 k8s 是一个异步的调度系统,当一个资源生命周期结束,内部的垃圾回收机制是如何运行的呢? 1.1  代码参考 v1.14.0-alpha.3 commitid: cd9e590178c9f3812e296484b587de1c79461033 1.2  简要说明 这里仅对 pod 以及 容器 的删除做了简要的说明 k8s 的垃圾回收机制逐渐向 evict 模块移动而不是直接放在 kubelet 中 垃圾回收作为整个系统的分支而不是核心部分,虽然刚刚开始; 之后也许会有 GCI 这种东西出现(虽然 Runtime 这个接口中已经有了) 1.3  gc 设计文档 k8s GC 设计文档可以参考下面链接 https://github.com/kubernetes/kubernetes/blob/release-1.3/docs/proposals/garbage-collection.md https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ 1.4  gc 触发条件 https://kubernetes.io/docs/concepts/cluster-administration/kubelet-garbage-collection/ 通过查看这个文档可以发现,旧的 gc 机制正在逐渐被被新的 evict 机制所取代 1.5  代码详解 1.5.1  pod 的删除 kubelet 启动时会启动 syncLoop 来处理 file、apiserver、http 这三个 channel 的变化 详细的变化处理可以看 kubelet.go 的 1872 行 syncLoopIteration 的定义 HandlePodRe