Kubernetes容器微服务架构概要介绍.docx

Kubernetes容器微服务架构概要介绍.docx

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

134****4182 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档