- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
Kubernetes容器微服务架构概要介绍
目录
TOC\o1-3\h\z\u1. Kuberentes的背景 3
1.1. 容器技术 4
1.2. 微服务架构 5
2. Kuberentes设计理念及架构 6
2.1. 设计理念 6
2.2. 声明式 7
2.3. 显式接口 10
2.4. 无侵入性 11
2.5. 可移植性 12
2.6. 架构 13
2.7. Master 14
2.8. Worker 16
3. Kubernetes?实现原理 17
3.1. 对象 17
3.2. Pod 19
3.3. 控制器 20
4. 总结 22
Kubernetes是这两年最热门、最被人熟知的技术了,它为软件工程师提供了强大的容器编排能力,模糊了开发和运维之间的边界,让我们开发、管理和维护一个大型的分布式系统和项目变得更加容易。
本文先简单介绍Kuberentes的背景、依赖的技术,它的架构以及设计理念,最后会提及一些关键概念和实现原理。
Kuberentes的背景
作为一个目前在生产环境已经广泛使用的开源项目,Kubernetes被定义成一个用于自动化部署、扩容和管理容器应用的开源系统;它将一个分布式软件的一组容器打包成一个个更容易管理和发现的逻辑单元。
Kubernetes是希腊语『舵手』的意思,它最开始由Google的几位软件工程师创立,深受公司内部?Borg?和Omega项目的影响,很多设计都是从Borg中借鉴的,同时也对Borg的缺陷进行了改进。
Kubernetes目前是CloudNativeComputingFoundation(CNCF)的项目,并且是很多公司管理分布式系统的解决方案。
在Kubernetes统治了容器编排这一领域之前,其实也有很多容器编排方案,例如?compose?和?Swarm,但是在运维大规模、复杂的集群时,这些方案基本已经都被Kubernetes替代了。
Kubernetes将已经打包好的应用镜像进行编排,所以如果没有容器技术的发展和微服务架构中复杂的应用关系,其实也很难找到合适的应用场景去使用。
所以在这里我们会简单介绍Kubernetes的两大『依赖』——容器技术和微服务架构。
容器技术
Docker已经是容器技术的事实标准了,作者在前面的文章中?Docker核心技术与实现原理?曾经介绍过Docker的实现主要依赖于Linux的namespace、cgroups和UnionFS。
它让开发者将自己的应用以及依赖打包到一个可移植的容器中,让应用程序的运行可以实现与环境无关。
我们能够通过Docker实现进程、网络以及挂载点和文件系统隔离的环境,并且能够对宿主机的资源进行分配。
这能够让我们在同一个机器上运行多个不同的Docker容器,任意一个Docker的进程都不需要关心宿主机的依赖,都各自在镜像构建时完成依赖的安装和编译等工作。
这也是为什么Docker是Kubernetes项目的一个重要依赖。
微服务架构
如果今天的软件并不是特别复杂并且需要承载的峰值流量不是特别多,那么后端项目的部署其实也只需要在虚拟机上安装一些简单的依赖,将需要部署的项目编译后运行就可以了。
但是随着软件变得越来越复杂,一个完整的后端服务不再是单体服务,而是由多个职责和功能不同的服务组成。
服务之间复杂的拓扑关系以及单机已经无法满足性能需求使得软件的部署和运维工作变得非常复杂,这也就使得部署和运维大型集群变成了非常迫切的需求。
小结:Kubernetes的出现不仅主宰了容器编排的市场,更改变了过去的运维方式,不仅将开发与运维之间边界变得更加模糊,而且让DevOps这一角色变得更加清晰。
每一个软件工程师都可以通过Kubernetes来定义服务之间的拓扑关系、线上的节点个数、资源使用量并且能够快速实现水平扩容、蓝绿部署等在过去复杂的运维操作。
Kuberentes设计理念及架构
设计理念
我们先介绍Kubernetes的一些设计理念,这些关键字能够帮助了解Kubernetes在设计时所做的一些选择:
这里将按照顺序分别介绍声明式、显式接口、无侵入性和可移植性这几个设计的选择能够为我们带来什么。
声明式
声明式(Declarative)的编程方式一直都会被工程师们拿来与命令式(Imperative)进行对比,这两者是完全不同的编程方法。
我们最常接触的其实是命令式编程,它要求我们描述为了达到某一个效果或者目标所需要完成的指令,常见的编程语言Go、Rub
您可能关注的文档
最近下载
- 《包装工程》投稿写作模板 模板使用说明: 1. 请将稿件直接 ....doc
- 百胜包装品工厂质量体系审核纲要及评估细则 V2012.pdf VIP
- 个人信用报告征信详细版纸质版2024年2月最新版带水印可编辑-实线.pdf
- 第三十届WMO省测特训营6年级第二讲——寻找透明的积木.docx VIP
- 第三十届WMO省测特训营6年级第二讲——课后练习题含答案.docx VIP
- 第三十届WMO省测特训营6年级第一讲——课后练习题含答案.pdf VIP
- PBL病例—休克【24页】(最新文档).pptx VIP
- 故事——小羊过桥.ppt
- 征信简版电子版PDF个人信用报告最新版2024年可编辑带水印模板.pdf
- 食品用包材供应商现场审核方案(检查表).xls VIP
文档评论(0)