您的當前位置: 首頁 > 三個皮匠報告百科 > 容器云

容器云

目錄

容器云是什么

當前,云計算被廣泛地應用于整合數據中心物理節點的物理資源。其中,多租戶是云計算被廣泛采用的一種特性,其允許不同租戶的計算實例可以同時運行在同一臺物理服務器上,而當租戶需要一臺新的云虛擬機時僅由云服務商提供。為解決這一問題,容器云應運而生。容器云,指的是基于開源容器和容器編排引擎,將容器作為資源分割的基本單位,封裝各類應用和運行環境,給開發者/系統管理者提供用于構建、發布和運行分布式應用的平臺。在不同類型的云服務中,多租戶容器云成為傳統基于虛擬機(Virtual Machine,VM)云基礎設施的輕量級替代品。容器是一種操作系統級的虛擬化技術,容器可通過避免額外抽象層的開銷實現接近本機的性能。容器管理和編排系統(如Docker、Kubernetes)的出現深刻地改變了在云上構建、運送和部署多層分布式應用程序的生態系統。目前,包括Amazon、IBM、Microsoft和Google在內的大量云服務提供商均已經提供了容器云服務。

容器技術

在面向應用的層級上,應用程序的環境配置、開發和運行,相對于在虛擬機基礎上資源消耗大、啟動慢、分布式應用伸縮不及時等缺點,容器技術在應用層面對資源分配上進一步細粒度化,通過將應用程序完整的運行環境,包括全部依賴庫、環境配置等封裝成一個通用的基礎鏡像,將應用本身構建于基礎鏡像之上,運行時只需將鏡像以容器方式運行即可,而且是啟動時間是秒級的,對于高并發、高彈性的應用提供了很好的解決方案。容器云源于Docker容器技術。Docker技術成為容器技術的代名詞,同時也進一步促進了容器技術的推廣和發展。Docker是容器化技術的具體技術實現之一,從容器的本質上說,容器是以進程的方式運行在操作系統上,并對該進程訪問資源時進行隔離和限制,Docker基于容器的設計思想,是在Linux Container(LXC)技術基礎上實現的核心管理引擎。對資源進行隔離和限制主要采用以下三種關鍵技術[1]

(1)命名空間

命名空間(Namespace)是Linux內核提供的用于進程級資源隔離的方法,每個容器實例本質上為一個獨立的系統進程,容器引擎通過對命名空間的進一步封裝和整合來實現容器間的隔離。命名空間保證了容器只會專注各自的運行環境和應用,不會影響或訪問其他容器,從而保證了各容器中應用程序的運行安全

容器云

(2)控制組

控制組(Control groups)又稱Cgroups,它是容器技術實現的另一個重要工具,同樣也是由Linux內核提供支持,對進程組的資源進行限制和統計,用來控制進程對物理硬件資源(CPU、內存、網絡、I/O、存儲等)的訪問,Cgroups的實現是通過內核給程序附加hooks,當程序在請求資源時,會觸發相應的hooks,從而實現對資源的控制。避免一些耗費資源的應用程序占用大量的物理資源,比如計算密集型任務,從而影響到其它容器的性能

(3)聯合文件系統

聯合文件系統(Union File System,UFS)是Linux中能夠對文件系統命名空間進行聯合操作的抽象文件系統。Docker容器引擎基于聯合文件系統設計了分層式鏡像文件格式,即Docker容器由多個鏡像文件按照層次堆疊而成,最上一層外作為可讀寫層,除第一層外都為只讀層。用戶可以在只讀層之上提交自己的應用文件來個性化定制容器鏡像,這里的容器鏡像和容器實例是一對多的關系,每個容器鏡像可以創建多個同類型的容器實例,可以用Java語言中類和對象的關系來做類比。容器鏡像的一次創建,可以通過從鏡像倉庫拉取的方式創建多個容器實例,通過這種分層的鏡像文件格式有利于容器鏡像的一致性和可重用性。

容器云與傳統云平臺的區別

(3)服務性能支持:兩者都支持負載均衡和彈性擴容,但容器云實現了支持服務發現、私網、SDN網絡功能,用戶能夠添加虛擬交換機(免費)連接多個容器,實現相互通信、訪問公網或搭建集群,如需增加服務性能,單獨再添加容器數量即可

(1)操作自由度:正常云主機的操作自由度高,功能非常全面;而容器云是輕量級的云服務產品,能實現云服務器絕大部分的功能,用戶可以自行安裝或運行任意應用程序。

(5)數據隔離性:容器云的隔離性比虛擬主機強,比云服務器弱。每臺容器的在CPU和內存上設有上限,目的是避免資源占用過高,影響同一宿主機上的其他主機運行。即使同一宿主機上的某一主機被黑,無法查看其他主機上的文件,能夠實現數據100%隔離。

(2)網絡選擇類型:云服務器是獨享IP公網,容器云則有私有網絡、獨享IP公網(同云服務器)、共享IP公網(同虛擬主機),或同時使用獨享IP和共享IP進行公網通信等四種網絡方式可用

(4)可用資源:在使用上,云服務器類似獨立主機,獨享服務器的所有網絡資源;容器云是共享宿主服務器資源,但它的共享北非完全共享,僅和宿主機共享硬件資源與操作系統,和其他容器共享內核,以實現資源的動態分配。

容器技術Docker介紹

目前,業界存在LXC、Docker、Warden、Rocket、OpenVZ等容器技術,其中,最具人氣并且最為廣泛的容器技術為Docker。

Docker是由Docker公司(原dotCloud公司)發布的一個開源的容器引擎,使用Go語言編寫,并遵從Apache2.0協議。Docker可以在容器內部快速啟動和部署應用程序,并通過Linux內核的資源隔離特征(如cgroups和kernel namespaces)以及聯合文件系統(如OverlayFS)等功能為容器實例提供資源隔離和安全的保障。Linux內核對命名空間namespaces的支持主要是隔離應用程序的操作環境,包括進程、網絡、用戶ID和掛載的文件系統,而內核的cgroups提供資源限制的功能,包括CPU、內存、塊I/O和網絡資源等。Docker自2013年發布以來,起初選擇LXC工具實現對容器的控制,自Docker0.9版之后,使用libcontainer庫管理namespaces、cgroups、 capabilities以及文件系統來實現對資源的管控。

使用Docker容器技術作為應用開發部署的工具,具有如下優點:

(1)高效的資源利用率。由于容器使用輕量級虛擬化方式,與底層共享操作系統,資源利用率更高,相同條件下可以運行更多的容器實例;

(2)擁有鏡像倉庫。Docker官方建立了容器鏡像倉庫(DockerHub),用戶可以自由上傳下載容器鏡像模板,為開發提供了便利;

(3)跨平臺的支持。Docker官方為容器設置了標準化屬性配置方法,支持將上層應用程序以及依賴的環境打包成鏡像,然后發布到任何流行的Limix機器上,實現了容器“構建一次,處處運行”;

(4)節約時間和成本。Docker容器支持快速啟動和部署,并且容器實例大小可以減小到MB級別,開銷低;

(5)支持持續部署和測試。容器的封裝性消除了應用程序測試和部署的環境差異,保證了應用程序生命周期的環境一致性,降低了應用持續集成、部署和測試的時間成本;

(6)操作簡單并對外提供Rest API接口[2]。

容器云架構

企業部署容器云的基本模式普遍是將容器部署在虛擬機云服務器上。盡管理論上講容器相較虛擬機擁有更加輕量、敏捷、高效的基礎資源調用方式,也能夠直接部署于物理機上并作為云資源的調度器。然而當前主流的企業容器云實踐中,裸機部署(指直接部署在物理服務器上)的運用仍然較少,其原因是一方面以虛擬化為基礎的云架構已經構建了成熟的行業生態和標準;另一方面,在裸機部署容器云架構下,容器域服務器之間缺少隔離層,其安全隱患是不可忽視的。我國部署容器云的通用模式如圖所示。

容器云的普遍架構方式是以Openstack作為IaaS級服務,在云服務上搭建Kubernetes容器平臺,構建PaaS級的容器云服務,為SaaS(Software as a Service,SaaS)級服務提供容器支持。在容器的企業級應用當中,即使只是提供單個服務往往也需要大量容器的共同參與,增加了程序運行的復雜性。在這種背景之下,Kubernetes成為了容器云平臺中最受歡迎的容器引擎。在2019年全球Docker容器編排管理工具,Kubernetes憑借可靠的穩定性成為了當下容器云中主流的容器編排引擎

容器云

容器云平臺

容器云平臺是一種以容器為核心的云計算平臺,相比傳統的云計算平臺,它更多地強調容器化,資源管理以容器為核心單位,因此,它對資源的管控更靈活、高效,更能滿足企業的多元化需求。容器云平臺不僅實現了“平臺即服務”,而且對基礎設施也有很好的管理。主流的容器云平臺提供的服務有資源調度與監控、服務編排與治理、應用快速部署、存儲服務與鏡像服務、監控告警等。容器云平臺的總體架構如圖

容器云平臺整體上可分為四層,最底層為與物理硬件相接洽的基礎設施資源層,在這之上為集群納管的資源調度層,集群之上是提供基本服務的平臺層,最上層為與用戶聯系緊密的業務應用層。

容器云

(1)基礎設施資源層是與硬件資源最接近的一層,其利用系統內核提供的一些接口虛擬化節點的物理資源,聚合這些資源并提供一些統一的接口給上層調用,基礎設施資源層管理的資源主要有網絡資源、操作系統、存儲資源、CPU等資源;

(2)資源調度層的實現依賴于Docker的虛擬化技術和Kubernetes的容器編排服務,資源調度層將所有基礎設施資源層提供的物理資源看作一個集群,集群內的每臺獨立的物理機或者虛擬機稱為節點,集群內部通過分區來進行資源隔離,集群整合了所有計算資源和存儲資源,通過設定配額來給容器分配CPU、內存資源,通過掛載存儲卷來使用存儲資源;

(3)平臺層提供了平臺上一些常見的服務,平臺層提供的服務依賴于資源調度層以及平臺組件。平臺提供了從用戶管理、資源管理、應用管理到運維監控等一系列功能,用戶管理包含多租戶管理、認證中心、權限管理等功能。資源管理包含對資源調度層的資源管理,例如,添加多個集群,給集群添加新的節點,掛載新的存儲卷等。應用管理包括應用部署、彈性伸縮、灰度發布等,應用管理的實現主要基于Kubernetes的容器編排技術。應用的持續集成也是應用管理中的一個關鍵點,應用的持續集成事實上包含應用管理中的多個獨立功能,它是由平臺中的Jenkins組件支持的,平臺內部部署了Jenkins服務,應用的持續集成服務便是調用平臺上的Jenkins服務實現的。容器云平臺也集成了私有的鏡像倉庫,該組件基于開源的Harbor項目實現,主要面向企業用戶提供用于高效管理鏡像的倉庫服務。容器云平臺的一大特色在于深化了DevOps理念,將應用部署方案簡化是一方面,另一方面在于平臺提供了很多運維服務,像監控告警、健康檢查等服務,監控告警主要是基于開源項目Prometheus,Prometheus是一個性能十分強勁的系統監控和告警系統,其對Kubernetes有很好的支持。另一方面,由于整個平臺是架構在Kubernetes集群之上的,因此,采用Prometheus來做監控告警服務是一個極佳的解決方案。

(4)業務應用層提供了平臺的幾種資源對象,包括應用、服務、實例,這幾個主要是從租戶、項目管理員、平臺管理員的視角抽象出來的平臺資源對象,向用戶屏蔽了 Kubernetes 的相關概念,便于用戶理解與使用[3]。

國內外常用的容器云平臺

1、私有云容器

(1)KubeSphere:一款基于Kubernetes構建的開源企業級容器平臺,QKE在QingCloud公有云上交付KubeSphere容器平臺全能力。

(2)靈雀云:Alauda Container Platform(簡稱“ACP”)是靈雀云推出的容器云平臺。

2、公有云容器服務

(1)Amazon Web Services(AWS):提供了ECS、AWSFargate、EKS等容器服務產品,為客戶提供容器虛機、無服務器容器和Kubernetes集群三類應用托管環境。

(2)Microsoft——Azure:Azure除了AKS等容器產品之外,還提供了向普通容器開發者的容器實例服務,例如為Windows開發者提供Windows容器,為Web開發者提供容器化WebServer服務。Windows容器的支持可以認為是Azure的一大特點。

(3)Google Clou:應用場景有Google Kubernetes Engine、Deep Learning Containers、CloudRun等

(4)阿里云:2016年5月正式推出容器服務,其容器產品家族涵蓋公共云、邊緣計算和專有云等場景。

3、數據云平臺

星環科技:星環科技結合公司大數據平臺TDH、云操作系統TCOS、人工智能平臺Sophon分別在大數據、容器云平臺和人工智能領域技術上的經驗優勢,推出新一代智能大數據云平臺產品Transwarp Data Cloud,該平臺利用了大數據+云+人工智能的融合,實現數據+應用的生態系統。

4、云原生存儲

(1)焱融云:YRCloudFile是一款有元數據服務的分布式文件存儲產品,支持元數據服務和數據服務的線性水平擴展

(2)衫巖數據:容器云存儲解決方案充分發揮了杉巖統一存儲平臺的云適配、開放等優勢,支持各種復雜的應用負載,可靈活支撐符合Kubernetes Software Conformance Certification認證的所有容器云平臺[4]。

參考資料:

[1] 鄭強清.基于LSTM的容器云資源預測與配置的研究

[2]張沛華.基于容器云的網絡建模與仿真關鍵技術研究

[3]鄭國慶.容器云平臺上應用自動化部署系統的設計與實現

[4]InfoQ&;星環科技:2021云原生時代容器云的技術發展趨勢(46頁).pdf

本文由@Y-L發布于三個皮匠報告網站,未經授權禁止轉載。

容器云相關報告

Dosec:2018年Docker容器最佳安全實踐白皮書(117頁).pdf

艾瑞咨詢:2020年中國容器云市場研究報告——艾瑞云原生系列報告(一)(56頁).pdf

騰訊云-閆志強 - Serverless容器云原生探索之旅:云開發-云托管落地實踐.pdf

分享到微信 分享到微博 分享到QQ空間
上一篇:生態農業
下一篇:特色小鎮
客服
商務合作
小程序
服務號
折疊
午夜网日韩中文字幕,日韩Av中文字幕久久,亚洲中文字幕在线一区二区,最新中文字幕在线视频网站