k8s-介绍

部分描述来自课程,用于总结

问题

  • docker 的存在主要解决什么通点?

docker 之前

在docker之前,已 Cloud Foundry 为代表的 PaaS 成了部署服务器的主流。

2013 年的后端技术领域,已经太久没有出现过令人兴奋的东西了。曾经被人们寄予厚望的云计算技术,也已经从当初虚无缥缈的概念蜕变成了实实在在的虚拟机和账单。而相比于的如日中天 AWS 和盛极一时的 OpenStack,以 Cloud Foundry 为代表的开源 PaaS 项目,却成为了当时云计算技术中的一股清流。

这时,Cloud Foundry 项目已经基本度过了最艰难的概念普及和用户教育阶段,吸引了包括百度、京东、华为、IBM 等一大批国内外技术厂商,开启了以开源 PaaS 为核心构建平台层服务能力的变革。如果你有机会问问当时的云计算从业者们,他们十有八九都会告诉你:PaaS 的时代就要来了!

事实上,像 Cloud Foundry 这样的 PaaS 项目,最核心的组件就是一套应用的打包和分发机制 。 具体的过程如下:

1.  打包 : Cloud Foundry 为每种主流编程语言都定义了一种打包格式,而“cf push”的作用,基本上等同于用户把应用的可执行文件和启动脚本打进一个压缩包内,上传到云上 Cloud Foundry 的存储中。接着,Cloud Foundry 会通过调度器选择一个可以运行这个应用的虚拟机,然后通知这个机器上的 Agent 把应用压缩包下载下来启动。

2.  分发:  这时候关键来了,由于需要在一个虚拟机上启动很多个来自不同用户的应用,Cloud Foundry 会调用操作系统的 Cgroups 和 Namespace 机制为每一个应用单独创建一个称作“沙盒”的隔离环境,然后在“沙盒”中启动这些应用进程。这样,就实现了把多个用户的应用互不干涉地在虚拟机里批量地、自动地运行起来的目的。

我们可以从下面章节的《IaaS,PaaS,SaaS 的区别》了解到 PaaS 这个过程其实只需要用户提供应用和数据就够了。运行环境和网络等问题交由 PaaS 本身处理 ,这就有一个问题了,例如说你在本地机器开发了应用,运行时和网络等基础设施肯定是你本地的环境,而当部署到云端的时候,如何保证云端和本地一致呢?
而这也是最痛苦的,运维和开发人员需要为了云端的线上环境的差异付出额外的时间和精力,那么如何使线上和本地的环境一致呢?要是能够把本地的环境原本的放在云端就好了,这个就是 ** Docker 镜像 ** 。

Docker 镜像解决的,恰恰就是打包这个根本性的问题。 所谓 Docker 镜像,其实就是一个压缩包。但是这个压缩包里的内容,比 PaaS 的应用可执行文件 + 启停脚本的组合就要丰富多了。实际上,大多数 Docker 镜像是直接由一个完整操作系统的所有文件和目录构成的,所以这个压缩包里的内容跟你本地开发和测试环境用的操作系统是完全一样的。

这就有意思了:假设你的应用在本地运行时,能看见的环境是 CentOS 7.2 操作系统的所有文件和目录,那么只要用 CentOS 7.2 的 ISO 做一个压缩包,再把你的应用可执行文件也压缩进去,那么无论在哪里解压这个压缩包,都可以得到与你本地测试时一样的环境。当然,你的应用也在里面!

这就是 Docker 镜像最厉害的地方:只要有这个压缩包在手,你就可以使用某种技术创建一个“沙盒”,在“沙盒”中解压这个压缩包,然后就可以运行你的程序了。

总结

Docker 项目给 PaaS 世界带来的“降维打击”,其实是提供了一种非常便利的打包机制。这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。

其他

方便理解

如果拿汽车来做比:
Docker好比汽车引擎,
Dockerfile相当于汽车蓝图,
Docker image(镜像)就是汽车样板,
Docker container(容器)类似于汽车的零部件,
Docker Registry可以看作是4s店,
Docker Compose就像老司机,
Docker Volume就像是汽车的油箱, 如果把容器间内的io数据流比喻成汽油,
Docker Swarm(或者K8s)就是交通枢纽。

IaaS,PaaS,SaaS 的区别

三者的区别
1297993-20210228183144789-964784984.jpg
那么三个的英文到底是啥呢?

  • PaaS : Platform as a Service
  • SaaS : Software as a Service

我们主要讲 PaaS,SaaS ,他们的区别就像这样子,蓝色的你需要提供的,例如: PaaS 需要你提供数据和应用就够了,这也是 Paas 为什么叫“ Platform as a Service”的原因了,而 SaaS 则什么都不用提供,只需要说出你的需求。

1297993-20210228183817474-1150265612.jpg

这让我们想起了我们去阿里云买服务器,阿里云提供网络,服务器的运行时等等,那么他就是Pass , 而例如钉钉,我提供一个服务,假如有
一家企业需要用到办公软件,使用了钉钉,这家企业是不需要提供自身的应用和数据的,这些都由钉钉维护着。

参考资料

posted @ 2021-03-02 22:41  float123  阅读(178)  评论(0编辑  收藏  举报