k8s-controller manager原理分析
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原理分析相关推荐
- K8S kube-proxy ipvs 原理分析
1 在k8s 设置ipvs模式 1.1 Perquisites 1.2 修改kube-proxy 启动参数 2 ipvs kube-proxy原理分析 2.1 集群内部发送出去的packet通过clu ...
- K8S kube-proxy iptables 原理分析
Precondition 什么是 Kube Proxy Kube Proxy 原理 部署环境 搭建一个GuestBook 例子 分析iptables 1. 创建iptables实现外网通过nodePo ...
- 【云原生进阶之容器】第二章Controller Manager原理2.8节--Resync机制
<重识云原生系列>专题各章首节索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第三章云存储第1节--分布式云存储总述 第四章云网络第一节--云网络技术发展简 ...
- 【重识云原生】第六章容器6.3.5节——Controller Manager概述
<重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...
- Kube Controller Manager 源码分析
Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, Repli ...
- Kubernetes Controller Manager 工作原理
原文连接:https://blog.ihypo.net/15763910382218.html 本文基于对 Kubernetes v1.16 的源码阅读,文章有一定的源码,但我会通过配图尽量描述清晰 ...
- k8s学习笔记(10)--- kubernetes核心组件之controller manager详解
kubernetes核心组件之controller manager详解 一.Controller Manager简介 1.1 Replication Controller 1.2 Node Contr ...
- k8s replicaset controller源码分析(2)-核心处理逻辑分析
replicaset controller分析 replicaset controller简介 replicaset controller是kube-controller-manager组件中众多控制 ...
- Kubernetes核心原理(二)之Controller Manager
本文个人博客地址:http://www.huweihuang.com/article/kubernetes/core-principle/kubernetes-core-principle-contr ...
最新文章
- css超过两行显示为..._这6种组织CSS的方式,可以帮助你解决CSS扩展维护难的问题...
- 运用Smark.SocketAsyncs方便实现数据交互服务
- pytorch one-hot转数组
- optee的fast call的介绍
- 18B树、B++树和Trie树
- 组件局域网中的无集线器、Windows XP、Windows 7、Windows 8的对等网
- [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)
- 标准库举例:sys、copy
- Spring的基于AspectJ的AOP开发——Spring AOP(五)
- java 包的package和import语句
- 雷达探测原理及坐标表示
- android是乐视手机刷机,乐视MAX(乐视 X900+)一键刷机教程,轻松刷机
- 数字故宫(360全景+纪录片+数据库+公开课)
- 如何对一个复杂网络的图进行分析? 计算复杂网络相关的所有参数 批处理
- 【课后习题】高等数学第七版上第一章 函数与极限 第六节 极限存在准则 两个重要极限
- unable to open debugger port java.net.SocketException socket closed 解决方法汇总,不定期更新
- 合理用药基础知识-普及篇
- 浅析汽车抵押贷款业务
- 《Spark -- The Definitive Guide》学习笔记Note.1
- 15个国外Web网站开发教程网站
热门文章
- 写给测试小白:怎么快速找到bug?怎么写测试用例?
- 舍选法抽样matlab,舍选抽样法.PPT
- Xcode安装及卸载
- docker创建镜像之Dockerfile
- 苏泊尔电磁炉dcl6907_苏泊尔电磁炉c20显示E3故障检修
- linux测试硬盘的ipos,Linux/Unix平台data-recovery常用的工具
- mysql nest loop伪代码_Nested Loop Join
- 注册php tp5,TP5登录注册
- loop one image for 10 secs
- some ubuntu shell commands