在Kubernetes架构中,controller manager是一个永不休止的控制回路组件,其负责控制集群资源的状态。通过监控kube-apiserver的资源状态,比较当前资源状态和期望状态,如果不一致,更新kube-apiserver的资源状态以保持当前资源状态和期望状态一致。 1. kube-controller-manager 下面从源码角度分析kube-controller-manager的工作方式。
在描述源码分析时,首先会列出重点目录结构及每块主要作用,然后分别对研究背景中提出的三个问题进行分析。 2.1 目录结构 在分析源码中,主要涉及的二级目录是: cmd/controller-manager cmd/kube-controller-manager pkg/controler 2.1.1 controller-manager controler-manager没有主干逻辑,主要是辅助kube-controller-manager模...
kube-controller-manager源码分析(一)之 NewControllerManagerCommand 以下代码分析基于kubernetes v1.12.0版本。 本文主要分析https://github.com/kubernetes/kubernetes/tree/v1.12.0/cmd/kube-controller-manager 部分的代码。 本文主要分析kubernetes/cmd/kube-controller-manager部分,该部分主要涉及各种类型的controller的参...
在kubernetesmaster节点中最重要的三个组件是:kube-apiserver、kube-controller-manager、kube-scheduler 分别负责k8s集群的资源访问入口、集群状态管理、集群调度。我们在之前的文章介绍了集群资源访问入口kube-apiserver “图解K8s源码 - kube-apiserver篇”,本篇尝试梳理清楚 kube-controller-manager 是如何“Manage Controlle...
Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理,可以说是k8s的核心模块,下面我们以概略的形式走读一下k8s Controller Manager 代码。 func NewControllerManagerCommand() *cobra.Command { ...
源码分析 1.结构体分析 1.1 NoExecuteTaintManager结构体分析 NoExecuteTaintManager结构体为taintManager的主要结构体,其主要属性有: (1)taintEvictionQueue:不能容忍node上NoExecute的污点的pod,会被加入到该队列中,然后pod会被删除; (2)taintedNodes:记录了每个node的taint; ...
(后面读源码将讲到) 暂停与恢复 暂停态时,对spec.template资源的更新都不会生效。恢复状态后,再执行更新操作。官方现在给的解释为:暂停态为支持多次更新配置而不用触发更新。 命令: $ kubectl rollout pause deployment/nginx //暂停 $ kubectl rollout resume deployment/nginx //恢复 ...
后面由于时间问题,会和大家一起从 client-go 走读。 Kubernetes 源码研习社:https://github.com/cloudnativeto/sig-k8s-source-code,大家有兴趣可以加入进来一起走读代码。 最后加个学习中梳理的一个图:
1、在controller-manager的Run函数部分调用了InformerFactory.Start的方法,Start方法初始化各种类型的informer,并且每个类型起了个informer.Run的goroutine。需要注意的是controller-manager中是先启动每个资源对象的controller然后在统一启动InformerFactory; 2、简单的说就是在初始化DeploymentController对象的时候完成了deployment...
https://blog.haohtml.com/archives/34724/ Kubernetes 控制器管理器(kube-controller-manager)是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路。 在机器人和自动化的应用中,控制回路是一个永不休止的循环,用于调节系统状态。 在 Kubernetes 中,每个控制器