kubernetes|图文并茂!带你深度解析Kubernetes( 二 )


裸金属架构:VMM直接安装和运行在物理机上;VMM自带虚拟内核的管理和使用底层的硬件资源 。 业界的Xen、VMWare ESX都是裸金属架构 。
宿主机架构:物理机上首先会装一个操作系统 , VMM安装和运行在操作系统上;在VMM再去装其他虚拟机操作系统 , 依赖与操作系统对硬件设备的支持与资源的管理 。 这种架构的好处是 , VMM会变得非常简单 , 因为可以基于操作系统去管理系统资源 , VMM只需要做额外的虚拟化工作 。 Oracle VirtualBox , VMWare Workstation、KVM都是这种架构 , 宿主机架构是目前虚拟化技术的主流架构 。
下图中 , 对比了物理机架构与宿主机虚拟化架构的区别 。

虚拟化架构有如下的优势:

  • 封装应用技术栈 。 虚拟化镜像中可以预装一些通用的软件与库 , 来减少应用对通用软件与库的依赖 。
  • 提高底层资源的隔离性 。 硬件层面做了隔离 , 虚拟机之间互不干扰 。
  • 动态调整机器、资源配置 。 虚拟化的配置可以动态升降配 , 用户可以按自己的需求调整 。
  • 提高资源利用率 。 资源使用率从平均不到10%提高到了15%左右 。
  • OpenStack
当物理机转变为虚拟机之后 , 如何对多台虚拟机的资源进行管理与调度 , 成为了一个新的问题 。
OpenStack给出了解决方案 , 它是一个开源的分布式的平台 , 能够统一管理多个服务器 , 按用户需求进行分配与调度虚拟机 。 其本质上是一组分配、管理虚拟机的自动化工具脚本 。
目前 , OpenStack已经发展成了IaaS的主流解决方案 , 即:OpenStack as IaaS 。 目前主流IaaS云服务厂商底层都是利用OpenStack技术 。

IaaS平台一定程度上提升了物理机的资源利用率 , 由物理机时代的低于10% , 提升到了15% 。 但虚拟机对资源利用率的提升仍存在一定的局限性 , 其相对笨重 , 启动慢 , 自身消耗大(其完整运行了一套操作系统) , 自身加载就要消耗几百兆的内存资源 。 此外 , 虚拟机可以预装一些软件 , 一定程度简化了应用程序的依赖安装 。 但应用程序的部署与打包 , 仍然需要开发人员各自解决 , 仍未高效的完成应用部署与分发 。
(四)PaaS平台Platform-as-a-Service (PaaS)平台即服务 。 PaaS提供了包括服务器、存储空间和网络等基础结构 , 但它并未包括中间件、开发工具、数据库管理系统等 。 PaaS旨在支持应用程序的完整生命周期:生成、部署、管理和更新 , 提供应用的托管能力 。
在IaaS阶段 , 服务厂商只提供虚拟机 , 虚拟机之上的软件栈都由用户管理 , 包括操作系统、持久化层、中间层、用户程序 。 在IaaS层面用户只是减少了关心底层硬件 , 而PaaS层面希望能够进一步解放用户 , 让用户真正只需关注应用本身 。

  • PaaS主要功能
目前一个成熟的PaaS平台应具备的主要功能 , 如下图所示:

早期PaaS平台 , 更多关注运行时环境与依赖服务 , 而目前的PaaS平台新增大量的支持服务 , 包括:认证授权、系统日志、应用监控等 , 以上都是应用开发的常见需求 。 原则上:共用内容就应该抽象出统一通用的组件 , 由框架和平台来实现 。 让用户只关心逻辑或应用本身 , 避免重复造轮子 。
  • PaaS早期代表Cloud Foundry
PaaS在成熟之前也经历了几个阶段 , 而PaaS早期的代表就不得不提Cloud Foundry 。 Cloud Foundry由VMWare开发 , 是第一款开源PaaS平台(2011年) 。 支持多种框架、语言、运行时环境、云平台及应用服务 , 使开发人员能够快速进行应用的部署 , 无需担心任何基础架构的问题 。
它主要功能包括以下:
  • 应用打包、分发部署
  • 以容器的方式运行应用
  • 均衡负载
  • 服务监控、异常重启
Cloud Foundry的出现 , 其描绘了PaaS平台的初步形态 , 推动了PaaS的发展 , 具有划时代的意义 。
但其最终并未成为PaaS主流 , 是因为其存在一个核心不足:它只对应用和配置进行了打包 , 而没有打包整体依赖(所谓的整体依赖包括:中间环境、操作系统文件) 。 所以它的包在跨平台运行时 , 会出现运行失败的现象 。 这个问题非常致命 。