Kubernetes学习总结(2)——Kubernetes设计架构
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。下面这张图是Kubernetes的架构图。
Kubernetes节点
在这张系统架构图中,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务。
Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。
每次个节点上当然都要运行Docker。Docker来负责所有具体的映像下载和容器运行。
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提供集群日志采集、存储与查询
分层架构
Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,如下图所示
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
kubelet
kubelet负责管理pods和它们上面的容器,images镜像、volumes、etc。
kube-proxy
每一个节点也运行一个简单的网络代理和负载均衡(详见services FAQ )(PS:官方 英文)。 正如Kubernetes API里面定义的这些服务(详见the services doc)(PS:官方 英文)也可以在各种终端中以轮询的方式做一些简单的TCP和UDP传输。
服务端点目前是通过DNS或者环境变量( Docker-links-compatible 和 Kubernetes{FOO}_SERVICE_HOST 及 {FOO}_SERVICE_PORT 变量都支持)。这些变量由服务代理所管理的端口来解析。
Kubernetes控制面板
Kubernetes控制面板可以分为多个部分。目前它们都运行在一个master 节点,然而为了达到高可用性,这需要改变。不同部分一起协作提供一个统一的关于集群的视图。
etcd
所有master的持续状态都存在etcd的一个实例中。这可以很好地存储配置数据。因为有watch(观察者)的支持,各部件协调中的改变可以很快被察觉。
Kubernetes API Server
API服务提供Kubernetes API (PS:官方 英文)的服务。这个服务试图通过把所有或者大部分的业务逻辑放到不两只的部件中从而使其具有CRUD特性。它主要处理REST操作,在etcd中验证更新这些对象(并最终存储)。
Scheduler
调度器把未调度的pod通过binding api绑定到节点上。调度器是可插拔的,并且我们期待支持多集群的调度,未来甚至希望可以支持用户自定义的调度器。
Kubernetes控制管理服务器
所有其它的集群级别的功能目前都是由控制管理器所负责。例如,端点对象是被端点控制器来创建和更新。这些最终可以被分隔成不同的部件来让它们独自的可插拔。
replicationcontroller(PS:官方 英文)是一种建立于简单的 pod API之上的一种机制。一旦实现,我们最终计划把这变成一种通用的插件机制。
参考:
https://github.com/kubernetes/kubernetes/blob/release-1.2/docs/design/architecture.md
https://feisky.gitbooks.io/kubernetes/architecture/architecture.html
Kubernetes学习总结(2)——Kubernetes设计架构相关推荐
- 容器编排技术 -- Kubernetes设计架构
容器编排技术 -- Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统.下面这 ...
- Kubernetes学习笔记(一)
2019独角兽企业重金招聘Python工程师标准>>> Kubernetes学习笔记(一) 博客分类: Kubernetes 导语 2015年4月,传闻已久的Borg论文伴随Kube ...
- 白瑜庆:知乎基于Kubernetes的kafka平台的设计和实现
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 自我介绍 我是知乎的技术中台工程师,现在是负责知乎的存储相关组件.我的分享主要基于三个,一个是简单 ...
- Kubernetes 学习总结(20)—— Kubernetes 与微服务和容器之间是什么关系?
什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?从根本上讲,微服务只是一个运行在服务器或虚拟计算实例上并响应网络请求的计算机程序.这与典型的 Rai ...
- Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere
前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...
- Kubernetes学习二:资源管理及入门实战
此部分上接kubernetes学习一:https://blog.csdn.net/weixin_43155804/article/details/125831675?spm=1001.2014.300 ...
- KCNA考试 第五章:kubernetes学习实践
文章目录 1. 简介 2. 学习目标 3. Kubernetes对象 4. 与Kubernetes交互 4.1 Demo: kubectl 5. Pod 概念 5.1 Demo: Pods 6. 负载 ...
- 云原生入门 第五章:kubernetes学习实践
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Kubernetes学习笔记-未整理
Kubernetes学习笔记 标签:Kubernetes 学习笔记 原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes ...
- Kubernetes学习前的必知知识点
Table of Contents DevOps详解 到底该如何理解DevOps 持续集成,持续交付,持续部署(CI/CD)简介 在有关微服务.DevOps.Cloud-native.系统部署等的讨论 ...
最新文章
- 如何做好一场技术演讲-总结:3、如何把你的观点深深地刻在别人的脑海中?
- ML 自学者周刊:第 2 期
- 【网址收藏】本地VSCode编辑远程服务器文件:Remote SSH
- SqlServer 执行计划及Sql查询优化初探
- Docker Storm开发环境搭建
- STM32F407 开发环境搭建 程序下载 个人笔记
- nas服务器改成网站,nas配置web服务器
- android主题与风格入门
- An Overview of MITRE Cyber Situational Awareness Solutions
- POJ 3581 Sequence(后缀数组)题解
- java 打印出了对象_Java打印对象信息(二)
- SpringMVC:生成Excel和PDF
- 30天自制操作系统 第一天
- 分布式事务 seata 最全入门教程
- rtsp 和 rtmp 推流(一)
- Logaster让设计logo更简单
- jdbc驱动安装以及简单测试
- 微信小程序调用地图设置起点终点导航
- linux显示桌面命令,linux显示桌面快捷键设置
- 百度发布《绿萝算法2.0解读》是想告诉大家这样做
热门文章
- matlab采集网口数据,使用Signal Tap II采集到的数据进行Matlab仿真(转载)
- android电视原理图,电视机工作原理
- nccloud开发环境搭建_VS Code 搭建开发环境
- 讯飞输入法pad版x86_讯飞搜狗为何抵不过百度输入法?读完你就明白了
- php 原生 redis,php redis_php redis扩展_php redis使用 - Lane Blog
- python装饰品 后端_python装饰器
- nsdictionary获取值_objective-c – 在NSDictionary中获取值
- 文件fluent_Win10 中解决FLUENT中UDF 的方法
- javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
- linux下文件的相关信息