Docker与Kubernetes容器虚拟化技术与应用
上QQ阅读APP看书,第一时间看更新

1.4 从Docker到Kubernetes

1.4.1 Kubernetes的由来

1.传统部署时代

早期,各个组织机构在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。

一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展,并且维护许多物理服务器的成本很高。

2.虚拟化部署时代

作为解决方案,引入了虚拟化。虚拟化技术允许用户在单个物理服务器的CPU上运行多个虚拟机(VM)。虚拟化允许应用程序在VM之间隔离,并提供一定程度的安全保障,因为一个应用程序的信息不能被另一个应用程序随意访问。

虚拟化技术能够更好地利用物理服务器上的资源,并且因为可轻松地添加或更新应用程序,可以实现更好的可伸缩性,降低硬件成本等。每个VM都是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。

3.容器部署时代

容器类似于VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。容器与VM类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和OS发行版本进行移植。

容器因具有许多优势而变得流行起来,下面列出了使用容器的几点好处。

(1)敏捷应用程序的创建和部署:与使用VM镜像相比,提高了容器镜像创建的简便性和效率。

(2)持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的容器镜像构建和部署。

(3)关注开发与运维的分离:在构建/发布时而不是在部署时创建应用程序容器镜像,从而将应用程序与基础架构分离。

(4)可观察性不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他指标信号。

(5)跨开发、测试和生产的环境一致性:在便携式计算机上与在云中相同地运行。

(6)跨云和操作系统发行版本的可移植性:可在Ubuntu、RHEL、CoreOS、本地、Google Kubernetes Engine和其他任何平台运行。

(7)松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分,并且可以动态部署和管理,而不是在一台大型单机上整体运行。

(8)资源隔离:可预测的应用程序性能。

(9)资源利用:高效率和高密度。