Kubernetes系统架构简介
from: http://www.infoq.com/cn/articles/Kubernetes-system-architecture-introduction
作者 杨章显
Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现[G1] 。如Urs Hölzle所说,无论是公有云还是私有云甚至混合云,Kubernetes将作为一个为任何应用,任何环境的容器管理框架无处不在。正因为如此, 目前受到各大巨头及初创公司的青睐,如Microsoft、VMWare、Red Hat、CoreOS、Mesos等,纷纷加入给Kubernetes贡献代码。随着Kubernetes社区及各大厂商的不断改进、发展,Kuberentes将成为容器管理领域的领导者。
接下来我们会用一系列文章逐一探索Kubernetes是什么、能做什么以及怎么做。
2. 什么是Kubernetes
Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:
1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
2) 以集群的方式运行、管理跨机器的容器。
3) 解决Docker跨机器容器之间的通讯问题。
4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
当前Kubernetes支持GCE、vShpere、CoreOS、OpenShift、Azure等平台,除此之外,也可以直接运行在物理机上。
接下来本文主要从以下几方面阐述Kubernetes:
1) Kubernetes的主要概念。
2) Kubernetes的构件,包括Master组件、Kubelet、Proxy的详细介绍。
3. Kubernetes主要概念
3.1. Pods
Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用。Pod包含的容器运行在同一个Minion(Host)上,看作一个统一管理单元,共享相同的volumes和network namespace/IP和Port空间。
3.2. Services
Services也是Kubernetes的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来支持,通过Proxy的port和服务selector决定服务请求传递给后端提供服务的容器,对外表现为一个单一访问接口,外部不需要了解后端如何运行,这给扩展或维护后端带来很大的好处。
3.3. Replication Controllers
Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行, 如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods。对于利用pod 模板创建的pods,Replication Controller根据label selector来关联,通过修改pods的label可以删除对应的pods。Replication Controller主要有如下用法:
如上所述,Replication Controller会确保Kubernetes集群中指定的pod副本(replicas)在运行, 即使在节点出错时。
通过修改Replication Controller的副本(replicas)数量来水平扩展或者缩小运行的pods。
Replication Controller的设计原则使得可以一个一个地替换pods来rolling updates服务。
如果需要在系统中运行multiple release的服务,Replication Controller使用labels来区分multiple release tracks。
3.4. Labels
4. Kubernetes构件
Kubenetes整体框架如下图3-1,主要包括kubecfg、Master API Server、Kubelet、Minion(Host)以及Proxy。
4.1. Master
1) Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。
2) Kubernetes Client将请求发送给API server。
3) API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。
4) REST Storage API对的请求作相应的处理。
6) 在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion信息。
7) 依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion节点上。
3.1.1. Minion Registry
Minion Registry负责跟踪Kubernetes 集群中有多少Minion(Host)。Kubernetes封装Minion Registry成实现Kubernetes API Server的RESTful API接口REST,通过这些API,我们可以对Minion Registry做Create、Get、List、Delete操作,由于Minon只能被创建或删除,所以不支持Update操作,并把Minion的相关配置信息存储到etcd。除此之外,Scheduler算法根据Minion的资源容量来确定是否将新建Pod分发到该Minion节点。
3.1.2. Pod Registry
3.1.3. Service Registry
3.1.4. Controller Registry
3.1.5. Endpoints Registry
3.1.6. Binding Registry
3.1.7. Scheduler
2) 实时监测Kubernetes集群中所有运行的Pod,Scheduler需要根据这些Pod的资源状况安全地将未分发的Pod分发到指定的Minion节点上。
3) Scheduler也监测Minion节点信息,由于会频繁查找Minion节点,Scheduler会缓存一份最新的信息在本地。
4) 最后,Scheduler在分发Pod到指定的Minion节点后,会把Pod相关的信息Binding写回API Server。
4.2. Kubelet
10) 从Cadvisor获取container info、 pod info、root info、machine info。
4.3. Proxy
5. 下篇主题
下篇讲述在CentOS7上用Kubernetes来管理容器。
6. 个人简介
7. 参考资料
- https://github.com/GoogleCloudPlatform/kubernetes/tree/master/docs
- http://www.slideshare.net/rajdeep
- http://www.docker.com
kube-controller-manager命令在Kubernetes组件中是扮演着什么角色呢?
Kubernetes系统架构简介相关推荐
- Kubernetes系统架构简介--转
原文地址:http://www.infoq.com/cn/articles/Kubernetes-system-architecture-introduction?utm_campaign=infoq ...
- LoadRunner系统架构简介与运行原理
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- 大数据开发:MongoDB系统架构简介
MongoDB作为NoSQL数据库,基于分布式环境的场景下,对于系统架构的性能是要求比较高的.面对分布式场景下的大规模数据存储,MongoDB以文档型存储任务为主.今天的大数据开发学习分享,我们就来讲 ...
- Saturn分布式调度之系统架构简介
VOL 134 12 2020-06 今天距2021年202天 这是ITester软件测试小栈第134次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- Kubernetes — 系统架构
目录 文章目录 目录 Kubernetes 的核心层级对象 Kubernetes 的核心逻辑对象 Object Pod Volume Controller Service Label Ingress ...
- Camera i2c、常见概念、系统架构简介
1.Cmera I2C介绍 I2C总线协议 I2C总线在物理连接上比较简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成.通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I ...
- ebs系统架构简介6——应用管理工具总结
Oracle 开发了 Oracle Applications Technology Layer. Products in the Oracle E-Business Suite technology ...
- 《Kubernetes与云原生应用》系列之Kubernetes的系统架构与设计理念
http://www.infoq.com/cn/articles/kubernetes-and-cloud-native-applications-part01 <Kubernetes与云原生应 ...
- 云原生钻石课程 | 第2课:Kubernetes 技术架构深度剖析
点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 本篇文章来自<华为云云原生王者之路训练营>钻 ...
最新文章
- 介绍一下android的事件分发机制
- 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法)
- python strip函数用法_python strip()函数 介绍
- 通信 / CRC 校验
- 8266串口调试助手_200行Python代码实现串口调试助手(2) 界面构建
- 魔方内部长啥样?三维动画展示其结构,谁发明的真是个天才
- C++继承同名静态成员处理
- C++ I/O 流 格式控制(上)
- RestTemplate与Feign使用对比
- node中的异步API
- 5-8 第五天 微信 JS-SDK
- 从机器学习谈起 (转)
- Jmeter进行接口测试流程步骤详解
- EasyOrtho卫星影像处理软件
- 平台级SAAS架构——统一身份管理系统
- thinkadmin中日期的使用
- Python可视化扩展库Matplotlib中使用参数cmap实现颜色映射
- python安装hydra
- 【SAP-SD】合同与发运协议的区别
- 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(十二)软件评测基础知识...
热门文章
- 闲话WPF之十五(WPF的数据处理 [2])
- rms 公式 有效值_怎样求信号中的RMS值?
- Cookie安全漫谈
- Golang for range陷阱
- linux存储--mmap与sendfile(十七)
- html 弹出遮罩 iframe,iframe正在加载时显示遮罩层 加载完毕后显示iframe
- signal软件如何退出账号_好视通视频会议软件app下载|好视通视频会议软件 3.15.7.15 官方版...
- Golang 优化之路-空结构[转]
- Java Servlet关键点详解
- ODAC(V9.5.15) 学习笔记(十七)主从模式