- 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是如何使容器流行,又是如何成就容器云的。