摘要:
回顾第一篇文章(https://www.cnblogs.com/00986014w/p/10458231.html),我们讲到RunKubelet方法实现kubelet的运行,而RunKubelet方法核心在于先调用CreateAndInitKubelet方法创建并初始化kubelet,后调用sta 阅读全文
摘要:
这一篇文章我们先从NewMainKubelet开始。 一、NewMainKubelet 方法非常长,只贴出一部分,但是很重要。主要做了以下几件事: (1)为kubelet加载各种配置,比如pod信息源、垃圾回收相关配置、监听的端口等。其中的podConfig引申一下,它是pod的三种信息来源的聚合( 阅读全文
摘要:
前一篇文章中,我们探索了Informer工作的大致逻辑,提到了添加回调函数部分包含了三块,即:Informer的创建、函数调用的逻辑、以及回调函数本身。前两块已在前文谈到过,下面我们来看看第三块,即回调函数自身的处理逻辑: 一、回调函数 这里仍然以deployment为例。首先还是进入NewDepl 阅读全文
摘要:
Kubelet是Kubernetes集群中node节点的核心组件之一,其作用是管理运行在Pod中的容器,使其处于正常运行状态。 Kubelet的启动函数代码位于cmd/kubelet/kubelet.go中,仍是通过cobra注册。 一、NewKubeletCommand 在NewKubeletCo 阅读全文
摘要:
本篇将着重分析InstallLegacyAPIGroup方法。 首先,判断传入的前缀是否合法。 其次,调用installAPIResources方法。 最后,在/api路径下生成一个WebService,并添加进Container。 进入installAPIResources方法: 前面的逻辑类似于 阅读全文
摘要:
API Server是Kubernetes的核心组件之一,其作用是通过RESTFUL的方式,向所有客户端提供一个集群内资源的统一的增改删查的接口,并将资源的状态存储在etcd中。 API Server入口函数的位置在cmd/kube-apiserver/apiserver.go中,也是通过cobra 阅读全文
摘要:
上一篇文章主要侧重于Scheduler在正式执行调度任务之前的准备工作。下面,我们将分析Scheduler的核心方法之一:scheduleOne,来学习Scheduler的具体执行方式。 一、scheduleOne 执行过程分为以下几步: (1)从队列中取出下一个Pod。 这一步通过调用sched. 阅读全文
摘要:
Scheduler是集群中Master节点的重要组件,其功能是根据集群中各Pod的资源需求、亲和性等指标,将Pod合理调度到Kubernetes集群中的各个节点上。 一、入口函数 入口函数与Controller Manager的入口函数结构相同,同样是应用了cobra包,在命令行中注册了kube-s 阅读全文
摘要:
上一篇文章中,我们看到了Controller Manager的基本运行逻辑,但是还有一些问题没有解决,我们将在本篇文章中进行分析。 一、ListAndWatch 首先是Informer。上一篇中写道,启动Informer本质上是调用了controller的reflector的Run方法。下面我们进入 阅读全文
摘要:
Controller Manager是Kubernetes的核心组件之一。我们知道,Kubernetes对集群的管理采用的是控制器模式,即针对各种资源运行多个controller(控制器)。控制器的逻辑是运行永不结束的循环,通过apiserver组件时刻获取集群某种资源的状态,并确保资源的当前状态与 阅读全文