- containerd原理剖析与实战
- 赵吉壮 张明月编著
- 1741字
- 2024-12-31 21:30:42
1.2 云原生技术栈与容器运行时
本节将介绍云原生技术栈中的重要一环——容器运行时,这也是本书的重点内容。
1.2.1 云原生技术栈
云原生技术栈是用于构建、管理和运行云原生应用程序的云原生技术分层。一个典型的云原生技术栈如图1.1所示。
图1.1 云原生技术栈
最底层由计算、存储和网络组成系统整体的物理基础设施。同时,平台添加了各种抽象层(容器编排层、容器运行时层、容器存储层、容器网络层),便于优化利用底层物理基础设施。
云原生技术栈中除了容器编排引擎(如Kubernetes),还需要额外的工具和软件来部署和管理应用软件。多个公有云提供商,如国内的火山引擎(VKE)、阿里云(ACK)、华为云(CCE)、腾讯云(TKE),以及国外的亚马逊网络服务(EKS)、谷歌云平台(GKE)和微软(AKS)提供了基于Kubernetes发行版的托管服务。
整个云原生技术栈基于Kubernetes的容器管理平台提供了一种新的应用交付模式:容器即服务(CaaS)。与平台即服务(PaaS)类似,容器管理平台可以部署在企业数据中心,作为托管云服务产品使用。对于要开发更安全且可扩展的容器化应用的开发人员而言,CaaS尤为重要。用户只需购买他们想要的资源(调度功能、负载平衡等),从而可以节约成本并提高效率(降本增效)。
接下来将依次介绍云原生技术栈中的几个重要组成部分:容器编排引擎、容器运行时、容器存储、容器网络。
1.容器编排引擎
容器编排引擎也就是Kubernetes,向上对接容器管理平台,提供容器编排接口,向下通过容器运行时接口、容器存储接口、容器网络接口打通与物理基础设施的联动,作为全局资源的调度指挥官。
2.容器运行时
容器运行时是抽象计算层资源的接口与实现,通过Linux namespace、cgroup操作计算层资源,为进程设置安全、隔离和可计量的执行环境,是应用真正的执行者,是整个云原生技术栈的基石,可以说脱离了容器运行时,整个云原生技术栈也将毫无价值。
3.容器存储
容器存储将底层存储服务暴露给容器和微服务使用,与软件定义存储(software defined storage,SDS)类似,通过容器存储层的抽象来屏蔽不同介质的存储资源。容器存储通过提供持久化的存储卷为有状态的容器应用提供存储服务。容器运行时、容器存储、容器网络共同构成了操作系统之上的抽象层。云原生生态系统通过容器存储接口(CSI)定义存储规范,鼓励各个存储提供商采用标准、可移植的方式为容器工作负载提供存储服务。
4.容器网络
与容器存储类似,容器网络将物理网络基础设施抽象化,暴露给容器一个扁平网络,提供pod到pod互访,node到node互访,pod到服务互访,以及pod和外部通信的能力。与容器存储接口类似,云原生生态系统同样为容器网络提供了可扩展的通用接口(CNI)。通过CNI接口可以屏蔽底层网络实现的具体实现,便于接入多种不同的网络方案,如vxlan、vlan、ipvlan等。
1.2.2 容器运行时
整个云原生技术栈的发展史其实就是容器技术的发展史,容器技术是整个云原生时代的催化剂。2013年Docker横空出世,并在整个IT行业迅速走红。Docker独有的镜像分发形式相对传统PaaS具有绝对优势。Docker的出现重塑了整个云计算PaaS层。
Docker提供了一种在安全隔离的容器中运行几乎所有应用的方式,这种隔离性和安全性允许在同一主机上同时运行多个容器。而容器的这种轻量级特性也意味着开发人员可以节省更多的系统资源,相比于虚拟机,不必消耗运行hypervisor所需要的额外负载,虚拟机与容器的对比如图1.2所示。
图1.2 虚拟机与容器的对比
如图1.2所示,虚拟机(virtual machine)共享同一个服务器的物理资源的操作系统。它是基于硬体的多个客户操作系统,由虚拟机监视器(hypervisor)实现。hypervisor是一种虚拟化服务器的软件,为虚拟机的启动模拟必备的资源(如CPU、内存、设备等)。每个虚拟机有自己完整的操作系统和内核。
与虚拟机的实现不同,容器没有虚拟化出独立的操作系统,而是多个容器共享宿主机的内核和操作系统,由容器运行时层来充当hypervisor的角色,模拟共享内核的多个虚拟环境。通过容器运行时的限制,每个容器中的进程依然认为自己是在一个“独立的操作系统”中。由于没有hypervisor、Guest OS、Guest Kernel层,容器具有轻量的特性:占用资源少、启动速度快。容器与虚拟机的详细对比如表1.2所示。
表1.2 容器与虚拟机的详细对比
正是因为容器相比传统虚拟机有无可比拟的巨大优势,以Docker为代表的容器运行时才得以横扫天下。容器以及容器云逐渐成为云计算基础设施的引领者,给云计算领域带来一场新的革命。
1.3节将介绍Docker和Kubernets的发展史,带领读者了解Docker是如何使容器流行,又是如何成就容器云的。