罗永浩|图文并茂!带你深度解析Kubernetes( 四 )



如下图所示 , Docker相比于虚拟机操作系统级的资源隔离 , 实现了进程级资源隔离 , 极大提升了资源利用率 。 具备以下特点:

  • 进程级隔离 , 更轻量
  • 更低消耗系统资源
  • 更快速启动
  • 更快交付与部署

(六)容器编排当Docker解决了应用打包的问题后 , PaaS上应用大规模部署与管理的问题愈发突出 。 此时 , 业内明白:容器本身没有“价值” , 有价值的是容器编排 。
容器编排(Orchestration):对Docker及容器进行更高级更灵活的管理 , 按照用户的意愿和整个系统的规则 , 完全自动化的处理好容器之间的各种关系(对象之间的关系远重要于对象本身) 。
容器技术做为底层基础技术 , 只能用来创建和启动容器的小工具 , 最终只能充当平台项目的“幕后英雄” 。 用户最终部署的还是他们的网站、服务、数据库 , 甚至是云计算业务 。 这就需要一个真正的PaaS平台 , 让用户把自己的容器应用部署在此之上 。
在以上的历史背景之下 , 2014年左右 , Docker、Mesos、Google相继发布自己的PaaS平台 , 容器编排之争正式开始 。
Docker发布了Swarm平台 , Swarm擅长跟Docker生态无缝集成 , docker用户可以低成本过渡 。 其最大亮点是使用Docker项目原有的容器管理API来完成集群管理 。 例如:单机Docker项目: docker run “我的容器” 。 集群Docker项目:docker run-H“我的Swarm集群API地址” “我的容器” 。
Mesos平台 , 擅长大规模集群的调度与管理 。 它是Apache基金会下的一个开源集群管理器 , 最初是由Berkeley分校开发的 。 它为应用程序提供了跨集群的资源管理和调度API 。 之后转向支持PaaS业务 , 推出了Marathon项目 。 它是一个高度成熟的PaaS项目 , 旨在让用户便捷管理一个数万级别的物理机集群 , 可使用容器在这个集群里自由部署应用 。
Google推出的是Kubernetes平台 , 整个系统的前身是Borg系统 , Kubernetes平台是Google在容器化基础设施领域十多年来实践经验的沉淀与升华 。
经过近3年的角逐 , 容器编排之争的胜利者是Kubernetes 。

  • 2017年9月 , Mesos宣布支持Kubernetes 。
  • 2017年10月 , Docker官方支持Kubernetes 。
  • 2018年3月 , Kubernetes正式从CNCF毕业 , 开始一统江湖 。 (所谓毕业是指这个产品可以直接使用在生产环境)
  • 目前 , Kubernetes已经成为容器编排领域的事实标准 。
Kubernetes , 读者一定会有一个疑问:为什么最后是Kubernetes?
每个人对这个问题 , 都有一些自己的理解 , 本文从技术方面对该问题进行了阐述 。
二、Why Kubernetes
Kubernetes源于希腊语 , 意为“舵手” 。 k8s缩写是因为k和s之间有八个字符的原因 。 它是google在2015开源的容器调度编排的平台 。 它是建立在Google大规模运行生产工作负载(Borg系统)十几年经验的基础上 ,结合了社区中最优秀的想法和实践 , 已经成为了目前容器编排的事实标准 。
其实看到Docker和Kubernetes的Logo , 就可以很快明白Kubernetes的作用 。 Docker的Logo是一条鲸鱼船 , 运载着许多封装好的集装箱(container) , 代表着一次打包到处运行的意图 。 而Kubernetes的Logo就是这条船的方向舵!
对于Why Kubernetes?很多人都有自己的理解 , 接下来笔者从技术的角度 , 阐述一下自己的观点 。 Kubernetes技术上的成功 , 个人认为核心在于三个关键点: