# kubernetes/cmd/kube-controller-manager/app/apps.gofuncstartReplicaSetController(ctx context.Context, controllerContext ControllerContext, controllerNamestring)(controller.Interface,bool,error) {goreplicaset.NewReplicaSetController( klog.FromContext(ctx), controllerContext.InformerFactory.Apps().V1().Replic...
在描述源码分析时,首先会列出重点目录结构及每块主要作用,然后分别对研究背景中提出的三个问题进行分析。 2.1 目录结构 在分析源码中,主要涉及的二级目录是: cmd/controller-manager cmd/kube-controller-manager pkg/controler 2.1.1 controller-manager controler-manager没有主干逻辑,主要是辅助kube-controller-manager模...
Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理,可以说是k8s的核心模块,下面我们以概略的形式走读一下k8s Controller Manager 代码。 func NewControllerManagerCommand() *cobra.Command { s, err := options.NewKubeControllerManagerOptions() if ...
本文主要分析https://github.com/kubernetes/kubernetes/tree/v1.12.0/cmd/kube-controller-manager 部分的代码。 本文主要分析kubernetes/cmd/kube-controller-manager部分,该部分主要涉及各种类型的controller的参数解析,及初始化,例如deployment controller和statefulset controller。并没有具体controller运行的详细逻辑,该部分...
2.初始化分析 2.1 NewNodeLifecycleController NewNodeLifecycleController为NodeLifecycleController的初始化函数,里面给taintManager注册了pod与node的EventHandler,Add、Update、Delete事件都会调用taintManager的PodUpdated或NodeUpdated方法来做处理; // pkg/controller/nodelifecycle/node_lifecycle_controller.gofuncNewNodeLifec...
在kubernetes master节点中最重要的三个组件是:kube-apiserver、kube-controller-manager、kube-scheduler 分别负责k8s集群的资源访问入口、集群状态管理、集群调度。我们在之前的文章介绍了集群资源访问入口kube-apiserver “图解K8s源码 - k...
Kubernetes源码解析之controller-manager deployment同步流程,基本使用1简单的yaml文件在K8s集群上可使用Kubectl命令以指定文件方式创建一个kind=Deployment的资源对象$kubectlcreate-fnginx.yamlapiVersion:apps/v1beta1kind:Deploymentmetadata:...
并没有具体controller运行的详细逻辑,该部分位于kubernetes/pkg/controller模块,待后续文章分析。 kube-controller-manager的cmd部分代码目录结构如下: kube-controller-manager ├── app │ ├── apps.go # 包含:startDeploymentController、startReplicaSetController、startStatefulSetController、startD...
kube-controller-manager 代码走读之 command 这里主要分析上面提到的 app.NewControllerManagerCommand() 这个函数和相关执行过程。这个函数是在 app 这个目录下的controllermanager.go这个文件中。 NewControllerManagerCommand 函数返回的是一个 cobra.Command 类型指针,里面主要的就是看Run这个方法,其它都是配置参数加载,...
1、在controller-manager的Run函数部分调用了InformerFactory.Start的方法,Start方法初始化各种类型的informer,并且每个类型起了个informer.Run的goroutine。需要注意的是controller-manager中是先启动每个资源对象的controller然后在统一启动InformerFactory; 2、简单的说就是在初始化DeploymentController对象的时候完成了deployment...