龚浩华,QQ 29185807,月牙寂 道长 第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang 源码为k8s v1.1.1稳定版本 2.2 ContainerGC
在 StartGarbageCollection 方法中会启动容器和镜像垃圾回收两个任务,其主要逻辑为: 1、启动 containerGC goroutine,ContainerGC 间隔时间默认为 1...kl.containerGC.GarbageCollect 调用的是 ContainerGC manager 中的方法,ContainerGC 是在 NewMainKubelet 中初始化的,ContainerGC...maxPerPodContainerCount), MaxContainers: int(maxContainerCount), } // 初始化 containerGC...= nil { return nil, err } ...... } 以下是 ContainerGC 的初始化以及 GarbageCollect 的启动: k8s.io/...以及 container 的 log dir; k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go:378 func (cgc *containerGC
= nil { // ... } else { // ... } }, ImageGCPeriod, wait.NeverStop) } 显然,这里启动了两个定时任务,一个是 ContainerGC...那么,我们接下来就分别看看 containerGC.GarbageCollect 和 imageManager.GarbageCollect 做了什么吧。...containerGC.GarbageCollect 首先,一条路往下走,GarbageCollect -> cgc.runtime.GarbageCollect -> m.containerGC.GarbageCollect...// pkg/kubelet/kuberuntime/kuberuntime_gc.go:407 func (cgc *containerGC) GarbageCollect(ctx context.Context...pkg/kubelet/kuberuntime/kuberuntime_gc.go:226 // evict all containers that are evictable func (cgc *containerGC
kl.containerGC.GarbageCollect kl.containerGC.GarbageCollect 调用的是 ContainerGC manager 中的方法,ContainerGC...maxPerPodContainerCount), MaxContainers: int(maxContainerCount), } // 初始化 containerGC...= nil { return nil, err } ...... } 以下是 ContainerGC 的初始化以及 GarbageCollect 的启动: k8s.io/...return cgc.runtime.GarbageCollect(cgc.policy, cgc.sourcesReadyProvider.AllReady(), false) } 可以看到,ContainerGC...以及 container 的 log dir; k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go:378 func (cgc *containerGC
probeManager/livenessManager: Handles container probing/ Manages container health check results. kubecontainer.ContainerGC...the PodResources service For serviceIndexer/nodeIndexer: get local cache for service and node object containerGC.../imageManager.GarbageCollection: 定期 GarbageCollect, call kubeGenericRuntimeManager.containerGC evictContainers
9、containerGC containerGC 负责清理 node 节点上已消亡的 container,具体的 GC 操作由runtime 来实现。
containerGC imageManager diskSpaceManager statusManager readinessManager containerRefManager volumeManager
klet.containerRuntime, plegChannelCapacity, plegRelistPeriod, klet.podCache, clock.RealClock{}) // 创建 containerGC...对象,进行周期性的容器清理工作 containerGC, err := kubecontainer.NewContainerGC(klet.containerRuntime, containerGCPolicy...klet.resourceAnalyzer, evictionConfig, killPodNow(klet.podWorkers, kubeDeps.Recorder), klet.imageManager, klet.containerGC
resourceAnalyzer; 8、调用 kuberuntime.NewKubeGenericRuntimeManager 初始化 containerRuntime; 9、初始化 pleg; 10、初始化 containerGC...= nil { klog.Errorf("Pod CIDR update failed %v", err) } // 10、初始化 containerGC、containerDeletor...、imageManager、containerLogManager containerGC, err := kubecontainer.NewContainerGC(klet.containerRuntime...= nil { return nil, err } klet.containerGC = containerGC klet.containerDeletor =...killPodNow(klet.podWorkers, kubeDeps.Recorder), klet.podManager.GetMirrorPodByPod, klet.imageManager, klet.containerGC
killPodNow(klet.podWorkers, kubeDeps.Recorder), klet.podManager.GetMirrorPodByPod, klet.imageManager, klet.containerGC...imagefs.avaliable对应的是删除无用容器和无用镜像 m.signalToNodeReclaimFuncs = buildSignalToNodeReclaimFuncs(m.imageGC, m.containerGC...signalToNodeReclaimFuncs中找到对应的释放资源的方法,这个方法在上面buildSignalToNodeReclaimFuncs中设置的,如: ``` nodeReclaimFuncs{containerGC.DeleteAllUnusedContainers
在deleteContainer时,通过invoke containerGC.netContainerCleanup进行容器的网络环境清理。
ContainerGC containerGC负责NOde节点上的dead状态的container,自动清理掉node上残留的容器.具体的GC操作由runtime来实现.
2.1.10 ContainerGC containerGC负责NOde节点上的dead状态的container,自动清理掉node上残留的容器。
containerGC:负责清理节点上的无用 container,具体的垃圾回收操作由容器运行时来实现 imageGC:负责 node 节点的镜像回收,当本地的存放镜像的本地磁盘空间达到某阈值的时候,会触发镜像的回收
13、创建镜像垃圾回收对象containerGC。 14、创建imageManager理容器镜像的生命周期,处理镜像的垃圾回收工作。
下面是几个函数的介绍: NewContainerGC:创建一个ContainerGC实例,初始化垃圾回收器的配置。
领取专属 10元无门槛券
手把手带您无忧上云