深入剖析Kubernetes - 预习篇

极客时间《深入剖析Kubernetes》课程学习笔记 - 预习篇

PaaS vs Docker

对于像Cloud Foundry这样的PaaS项目而言,最核心的组件就是一套应用的打包和分发的机制。Cloud Foundry 为每种主流编程语言都定义了一种打包格式,而“cf push”的作用,基本上等同于用户把应用的可执行文件和启动脚本打进一个压缩包内,上传到云上 Cloud Foundry 的存储中。接着,Cloud Foundry 会通过调度器选择一个可以运行这个应用的虚拟机,然后通知这个机器上的 Agent 把应用压缩包下载下来启动。
可以说,PaaS之所以能够帮助用户大规模部署应用到集群,是因为它提供了一套应用打包的功能。而这个功能却给用户带来了很大的问题,因为一旦用上了PaaS,用户就必须为每种语言、每种框架,甚至每个版本的应用维护一个打好的包。这个打包过程没有章法可循,并且由于本地开发环境与PaaS环境的差异,很多应用都需要做非常多的修改和配置工作才能正常部署。
而Docker凭借”将整个操作系统的所有文件和目录构成“打包成一个镜像的方式,解决了打包这一根本性的问题。这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。
不过,Docker 项目固然解决了应用打包的难题,但正如前面所介绍的那样,它并不能代替 PaaS 完成大规模部署应用的职责。

迈向PaaS的Docker

实际上,Docker 项目一日千里的发展势头,一直伴随着公司管理层和股东们的阵阵担忧。他们心里明白,虽然 Docker 项目备受追捧,但用户们最终要部署的,还是他们的网站、服务、数据库,甚至是云计算业务。
这就意味着,只有那些能够为用户提供平台层能力的工具,才会真正成为开发者们关心和愿意付费的产品。而 Docker 项目这样一个只能用来创建和启停容器的小工具,最终只能充当这些平台项目的“幕后英雄”。
所以,Docker公司也迈向了“PaaS化”,推出了Swarm项目。Swarm 的最大亮点,则是它完全使用 Docker 项目原本的容器管理 API 来完成集群管理,例如:

  • 单机的Docker项目:
    1
    $ docker run "my container"
  • 多机的Docker项目:
    1
    $ docker run -H "my swarm cluster api url" "my container"
    所以在部署了 Swarm 的多机环境下,用户只需要使用原先的 Docker 指令创建一个容器,这个请求就会被 Swarm 拦截下来处理,然后通过具体的调度算法找到一个合适的 Docker Daemon 运行起来。

Comments