为什么要虚拟化,为什么要容器,为什么要docker,为什么要k8s
虚拟化技术在硬件层面提供资源隔离,以满足各种应用的运行需求,特别是在硬件资源过剩的情况下,虚拟化可以有效提高资源利用率,降低硬件成本。例如:一个组织需要同时运行公司网站、邮件服务器、内部OAN和其他应用程序。
单个应用仅需要20%~50%的硬件性能,单个服务器即可满足三个应用的需求。
在这种情况下,您可以通过部署跨平台应用程序来提高服务器利用率。
然而,当应用程序之间存在版本和库冲突时,简单的物理部署很难解决。
虚拟化技术提供了隔离不同应用运行环境、消除冲突、提高维护效率的解决方案。
虚拟化和容器技术在应用集群方面各有优势和局限性。
从集群需求来看,物理集群和虚拟集群都需要资源扩展,但虚拟化集群在性能足够的情况下可以更好地调整资源分配。
综上所述,当硬件资源过多、应用程序之间存在冲突或集群需求时,虚拟化技术可以有效提高资源利用率并简化应用程序管理。
虚拟化和容器技术的选择应仔细考虑应用需求、集群架构和资源管理效率。
Docker这样的容器技术与虚拟化技术的区别是什么?
Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序和依赖项打包到可移植容器中,然后将其发布到任何流行的Linux机器上,这些机器也可以虚拟化。容器使用完全沙箱机制,彼此之间没有接口(类似于iPhone应用程序)。
它几乎没有性能开销,可以轻松地在机器和数据中心上运行。
最重要的是,它们不依赖于任何语言、框架或系统。
Docker网站上提到了Docker的典型场景:应用程序的自动化打包和部署轻量级构建私有PA环境自动化测试和持续集成/部署部署和扩展Web应用程序、数据库和后端服务由于其基于LXC、KVM的轻量级虚拟化功能与例如Docker相比,它最明显的特点是启动速度快并且需要的资源更少。
需要。
因此,构建一个隔离的、标准化的运行环境,轻量级的PaaS(如Dokku),自动化测试和持续集成环境,以及所有可以水平扩展的应用(尤其是需要快速部署且需要封闭的Web应用)。
处理高峰和低谷)。
为了创建标准化的运行环境,现有的解决方案大多是在BaseOS上运行Puppet/Chef或一组镜像文件,缺点是前者需要很多BaseOS的先决条件,而后者几乎无法修改(因为CopyOnWriterootfs的文件格式在运行时是只读的)。
另外,后者文件体积较大,环境管理和版本控制也是一个问题。
PaaS环境是不言自明的。
从设计之初,以dotcloud为例,由于其标准化的构建方法(buildfile)和良好的RESTAPI,它被用作PaaS产品的环境基础,自动化测试和持续集成/部署都可以很好。
集成的到来是因为LXC的轻量级特性,启动速度更快,而且Docker只能加载每个容器的变化部分,因此它占用的资源更少,并且比像KVM这样的虚拟化解决方案更独立的话,在环境中占用的资源更少。
。
在计算机术语中,它通常指的是在虚拟基础上而不是在真实基础上运行的计算元素。
虚拟化基本上是指资源的抽象,即同一物理资源的多个逻辑表示,或者多个物理资源的同一逻辑表示。
具体到服务器虚拟化,它是多个物理资源的单一逻辑表示。
虚拟化技术可以扩展硬件的容量并简化软件的重新配置过程。
CPU虚拟化技术可以在单个CPU上并行模拟多个CPU,允许一个平台同时运行多个操作系统,应用程序可以在独立的空间运行而不互相影响,使计算机任务更加高效。
效率显着提高。
在实际生产环境中,虚拟化技术主要用于解决高性能物理硬件的容量过剩问题,以及对容量较低的旧硬件进行重组和再利用。
这使得底层物理硬件变得透明,从而最大化物理硬件的利用率。