controller manager作为集群内部的管理控制中心,负责集群内的Node,Pod副本,服务端点(endpoint),命名空间(namespace)等的管理,当某个Node意外宕机,CM会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态。

如下图所示:

CM内部包含了RC,node controller,namespace controller等多个控制器,每种控制器都负责一种具体的控制流程,而CM正是这些controller的核心管理者。

在k8s集群中与controller manager并重的另一个组件是k8s scheduler,它的作用是将待调度的pod通过一些复杂的调度流程计算出最佳目标节点,然后绑定到该节点上。

Replication Controller

RC的作用是确保在任何时候集群中一个RC所关联的Pod副本数量保持预设值。

最好不用越过RC而直接创建Pod,因为通过RC管理Pod副本,实现自动创建,补足,替换,删除Pod副本,提供系统的容灾能力。

总结一下RC的职责:

1.确保当前集群中有且仅有N个Pod实例

2.通过调整RC中yaml文件的spec.replicas属性值来实现系统扩容或缩容

3.通过改变RC中的Pod模板来实现系统的滚动升级。

再总结一下RC的典型使用场景,如下

1.重新调度

2.弹性伸缩

3.滚动更新

Node controller

kubelet进程在启动时通过API server注册自身节点信息,并定时向API server汇报状态信息,API  server更新这些信息到etcd中。

Node controller通过API server定时获取Node的相关信息,实现管理和监控Node。工作流程如下图:

endpoint controller 和service controller

首先看看service,endpoint与pod的关系:

endpoint表示了一个service对应的所有pod副本的访问地址,而endpoint controller就是负责生成和维护所有endpoint对象的控制器。负责监听service和对应的Pod副本的变化,若service被删除,则删除与该service同名的endpoint对象,若检测到新的service创建或修改,则先根据该service获取相应的pod列表,然后创建或更新service对应的endpoint对象。

那么endpoint对象如何使用呢。答案是在每个node上的kube-proxy进程,该进程获得每个service的endpoint,实现service的负载均衡功能。

Namespace controller

用户通过API server可以创建新的Namespace并保存在etcd中,namespace controller定时通过API server读取这些namespace信息,若namespace被删除,则NC删除该namespace下的RC,Pod等资源对象。

如果namespace controller观察到namespace设置了删除期限,同时namespace的spec.finalizers域值为空,则NC将通过API server删除该namespace资源。

转载于:https://www.cnblogs.com/sichenzhao/p/9320111.html

k8s-controller manager原理分析相关推荐

  1. K8S kube-proxy ipvs 原理分析

    1 在k8s 设置ipvs模式 1.1 Perquisites 1.2 修改kube-proxy 启动参数 2 ipvs kube-proxy原理分析 2.1 集群内部发送出去的packet通过clu ...

  2. K8S kube-proxy iptables 原理分析

    Precondition 什么是 Kube Proxy Kube Proxy 原理 部署环境 搭建一个GuestBook 例子 分析iptables 1. 创建iptables实现外网通过nodePo ...

  3. 【云原生进阶之容器】第二章Controller Manager原理2.8节--Resync机制

    <重识云原生系列>专题各章首节索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第三章云存储第1节--分布式云存储总述 第四章云网络第一节--云网络技术发展简 ...

  4. 【重识云原生】第六章容器6.3.5节——Controller Manager概述

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  5. Kube Controller Manager 源码分析

    Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, Repli ...

  6. Kubernetes Controller Manager 工作原理

    原文连接:https://blog.ihypo.net/15763910382218.html 本文基于对 Kubernetes v1.16 的源码阅读,文章有一定的源码,但我会通过配图尽量描述清晰 ...

  7. k8s学习笔记(10)--- kubernetes核心组件之controller manager详解

    kubernetes核心组件之controller manager详解 一.Controller Manager简介 1.1 Replication Controller 1.2 Node Contr ...

  8. k8s replicaset controller源码分析(2)-核心处理逻辑分析

    replicaset controller分析 replicaset controller简介 replicaset controller是kube-controller-manager组件中众多控制 ...

  9. Kubernetes核心原理(二)之Controller Manager

    本文个人博客地址:http://www.huweihuang.com/article/kubernetes/core-principle/kubernetes-core-principle-contr ...

最新文章

  1. css超过两行显示为..._这6种组织CSS的方式,可以帮助你解决CSS扩展维护难的问题...
  2. 运用Smark.SocketAsyncs方便实现数据交互服务
  3. pytorch one-hot转数组
  4. optee的fast call的介绍
  5. 18B树、B++树和Trie树
  6. 组件局域网中的无集线器、Windows XP、Windows 7、Windows 8的对等网
  7. [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)
  8. 标准库举例:sys、copy
  9. Spring的基于AspectJ的AOP开发——Spring AOP(五)
  10. java 包的package和import语句
  11. 雷达探测原理及坐标表示
  12. android是乐视手机刷机,乐视MAX(乐视 X900+)一键刷机教程,轻松刷机
  13. 数字故宫(360全景+纪录片+数据库+公开课)
  14. 如何对一个复杂网络的图进行分析? 计算复杂网络相关的所有参数 批处理
  15. 【课后习题】高等数学第七版上第一章 函数与极限 第六节 极限存在准则 两个重要极限
  16. unable to open debugger port java.net.SocketException socket closed 解决方法汇总,不定期更新
  17. 合理用药基础知识-普及篇
  18. 浅析汽车抵押贷款业务
  19. 《Spark -- The Definitive Guide》学习笔记Note.1
  20. 15个国外Web网站开发教程网站

热门文章

  1. 写给测试小白:怎么快速找到bug?怎么写测试用例?
  2. 舍选法抽样matlab,舍选抽样法.PPT
  3. Xcode安装及卸载
  4. docker创建镜像之Dockerfile
  5. 苏泊尔电磁炉dcl6907_苏泊尔电磁炉c20显示E3故障检修
  6. linux测试硬盘的ipos,Linux/Unix平台data-recovery常用的工具
  7. mysql nest loop伪代码_Nested Loop Join
  8. 注册php tp5,TP5登录注册
  9. loop one image for 10 secs
  10. some ubuntu shell commands