K8S Kubernetes 架构
Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。
Kubernetes架构
Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Labels和单Pod单IP等。

Kubernetes主要由以下几个核心组件组成:
- etcd保存了整个集群的状态;
 - apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
 - controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
 - scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
 - kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
 - Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
 - kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
 
除了核心组件,还有一些推荐的Add-ons:
- kube-dns负责为整个集群提供DNS服务
 - Ingress Controller为服务提供外网入口
 - Heapster提供资源监控
 - Dashboard提供GUI
 - Federation提供跨可用区的集群
 - Fluentd-elasticsearch提供集群日志采集、存储与查询
 
k8s各组件间工作流程:

①运维人员向kube-apiserver发出指令(我想干什么,我期望事情是什么状态)(以下kube-apiserver简称apiserver、kube-controller-manager简称controller、kube-scheduler简称scheduler)
②api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态)
③controller通过list-watch机制,监测发现新的deployment,将该资源加入到内部工作队列,发现该资源没有关联的pod和replicaset,启用deployment controller创建replicaset资源,再启用replicaset controller创建pod。
④所有controller被创建完成后.将deployment,replicaset,pod资源更新存储到etcd。
⑤scheduler通过list-watch机制,监测发现新的pod,经过主机过滤、主机打分规则,将pod绑定(binding)到合适的主机。
⑥将绑定结果存储到etcd。
⑦kubelet每隔 20s(可以自定义)向apiserver通过NodeName 获取自身Node上所要运行的pod清单.通过与自己的内部缓存进行比较,新增加pod。
⑧kubelet创建pod。
⑨kube-proxy为新创建的pod注册动态DNS到CoreOS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡。
⑩controller通过control loop(控制循环)将当前pod状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则controller会将pod修改为用户期望状态,实在不行会将此pod删掉,然后重新创建pod。
K8S Kubernetes 架构的更多相关文章
- k8s入坑之路(2)kubernetes架构详解
		
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平 ...
 - 【转载】k8s入坑之路(2)kubernetes架构详解
		
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平台被 ...
 - 【Kubernetes 系列二】从虚拟机讲到 Kubernetes 架构
		
目录 什么是虚拟机? 什么是容器? Docker Kubernetes 架构 Kubernetes 对象 基础设施抽象 在认识 Kubernetes 之前,我们需了解下容器,在了解容器之前,我们得先知 ...
 - k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)
		
k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...
 - kubernetes架构(2)
		
一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Ku ...
 - 第2篇Kubernetes架构
		
一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 ...
 - Kubernetes架构介绍
		
目录 Kubernetes架构 k8s架构图 一.K8S Master节点 API Server Scheduler Controller Manager ETCD 二.K8S Node节点 Kube ...
 - K8s生产架构
		
部分图片显示问题,特附上有道云笔记中的链接:http://note.youdao.com/noteshare?id=df78492d2c25383975c67f3eadf0bbd9&sub=4 ...
 - K8s / Kubernetes 从入门到入门
		
Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是k ...
 
随机推荐
- MySql注释的写法
			
每一种语言都有它的注释方式,代码量少的时候还可以,随着代码量越来越多,代码注释的重要性也越发凸显. 在mysql中主要有三种方式: 1.常用的方式,跟在css中那些注释一样 :/* 内容 */ /* ...
 - 2.将多个元素设置为同一行?清除浮动有几种方式?【HTML】
			
1.将多个元素设置为同一行:float,inline-block 清除浮动的方式: 方法一:添加新的元素 .应用 clear:both: 方法二:父级div定义 overflow: hidden: 方 ...
 - 解决linux下创建用户时出现 Creating mailbox file: 文件已存在
			
原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱),路径是:/var/spool/mail/用户名. 可以直接用命令#rm -rf /var/spool/mail/用户名 ...
 - 【转】spring 自定义注解(annotation)与 aop获取注解
			
首先我们先介绍Java自定义注解. 在开发过程中,我们实现接口的时候,会出现@Override,有时还会提示写@SuppressWarnings.其实这个就是Java特有的特性,注解. 注解就是某种注 ...
 - 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定理
			
2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定 ...
 - LeetCode - 206、反转链表
			
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL /** * 列表定 ...
 - js 字符截取 汉字2字符 英文1个字符
			
function countCharacters(str, num) { var str = '' + str || '', num = +num || 0, res = '', length = 0 ...
 - 团队作业第六次—团队Github实战训练(追光的人)
			
所属课程 软件工程1916 作业要求 团队作业第六次-团队Github实战训练 团队名称 追光的人 作业目标 搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽奖人员颁布抽奖结果的基本 ...
 - C# 7.0 中的新特性((.NET Framework 4.7 与 Visual Studio 2017 ))
			
C#7.0 于 2017年3月 随 .NET 4.7 和 VS2017 发布. 一. out 变量(out variables) 以前我们使用out变量必须在使用前进行声明,C# 7.0 给我们提供了 ...
 - java singleton(单例设计模式)
			
单例设计模式的主要作用是: 1.控制资源的使用,我们对资源使用线程同步来实现并发访问. 2.节约资源,我们对一个类只进行一个实例化进行全局的资源访问,节约了内存. 3.作为通信媒介,也是数据共享,可以 ...