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

  • 应用隔离性差 。 多业务混部在一台机器时 , 会产生干扰 。 例如:当某一应用资源使用率突然提升 , 会抢占其他应用的可用资源 。
  • (三)IaaS平台Infrastructure as a service (IaaS) 基础设施即服务 , 用户可以按需去申请基础设施资源(包括:计算、存储、网络) 。
    IaaS商业化道路上的一个标志性事件:2006年AWS推出了EC2(亚马逊弹性云端运算) , 其基于Xen虚拟化技术 , 用户可以在web界面上配置、获取虚拟机资源 , 部署应用 。 通过规模化来降低边际成本 。
    • 虚拟化技术
    IaaS的底层核心技术是虚拟化技术 。 虚拟化技术是一种资源关联技术 , 是将计算机的各种实体资源 , 如服务器、网络、存储等 , 进行抽象、整合、管理与再分配的一种技术 。 最常用的一种方案是基于虚拟机(Hypervisor-based)的虚拟化实现 。 其通过一个软件层的封装 , 提供和物理硬件相同的输入输出表现 , 实现了操作系统和计算机硬件的解耦 , 将OS和计算机从一对一转变为多对多(实际上是一对多)的关系 。 该软件层称为虚拟机管理器(VMM/Hypervisor) , 它分为两大类:裸金属架构、宿主机架构 。
    裸金属架构: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旨在支持应用程序的完整生命周期:生成、部署、管理和更新 , 提供应用的托管能力 。