一、容器與容器云
容器(Linux Container)也可譯為集裝箱,詳見《高冷的云原生,原來可以這樣理解》。
容器是計算演進方向的一個節點(物理機、虛擬機、容器、無服務器計算)。
虛擬機采用的虛擬化技術是Hypervisor(KVM、XEN)。優點是隔離性較好,存在的問題是每個虛擬機需要操作系統、依賴環境,運行起來比較重,啟動時間長。
容器采用的虛擬化技術是Namespace(《Linux 基礎知識:網絡命名空間》)和Cgroup,進行操作系統內核級的虛擬化。優點是輕量、秒級啟動,缺點是容器間的隔離,安全性需要提高。
虛擬機的管理有CloudStack、OpenStack。
容器的管理也出現了Mesos、Swarm、Kubernetes。
Kubernetes的基礎知識,可查閱:
Kubernetes:術語解釋
Kubernetes:集群部署
Kubernetes:邏輯組件
Kubernetes:Pod簡易理解
Kubernetes:flannel網絡
Kubernetes:應用部署與訪問
Kubernetes較好地解決了應用的編排與調度問題,但也存在著容器的安全隔離弱、運維管理成本高,需要進行容量規劃、節點管理、服務組件告警處理等問題。
二、公有云是如何提供容器服務的?
以阿里云為例,提供了容器服務ACK、彈性容器實例ECI、Serverless容器服務 ASK等。
下面我們來看下這些產品所解決的痛點是什么?
1. 容器服務ACK
針對Kubernetes學習曲線高、運維難等問題,公有云廠商通過適配和增強Kubernetes,簡化運維工作,推出Kubernetes托管服務。
阿里云推出了容器服務ACK(Alibaba Cloud Container Service for Kubernetes),提供不同等級的服務:
用戶自己進行容量規劃、節點(Master和Worker)部署( ECS或者裸金屬 )、維護等工作,稱為專有模式。
用戶只需部署Worker節點,Master節點和相關運維工作則由阿里云負責,稱為托管模式。
如需擴容Kubernetes集群,則只需調整ECS個數,其它工作則自動完成(響應級別為分鐘級)。
- 彈性容器實例ECI
容器服務ACK中,不論是專用模式還是托管模式,都需要進行容量的手工伸縮(分鐘級),并都存在資源利用不充分的問題(帶來成本)。
針對這些問題,阿里云推出了彈性容器實例ECI(Elastic Container Instance)。一個ECI就是一個Pod(Pod由阿里云來運維),供Kubernetes調度和運行。用戶只需提供打包好的鏡像,并為容器運行消耗的資源按需付費(免運維)。
ECI(容器形態)和ECS(虛擬機形態)具有同樣的地位,共享共用阿里云的計算基礎設施。
- Serverless Kubernetes(ASK)
基于ECI,阿里云推出了“Serverless”版本的ASK(Alibaba Serverless Kubernetes),不僅實現了Master節點的托管,還實現了計算節點的無限擴展。計算節點使用了Virtual Node來管理ECI(POD),用戶只需提交Yaml 文件即可創建Pod。
每個Virtual Node最多支撐3000個POD,如POD數量超過3000個,則需要創建多個Virtual Node。
那么,Virtual Node是如何實現的呢?
在《Kubernetes:邏輯組件》一文中,我們知道Kubernetes集群的邏輯組件包含kubelet,而kubelet的作用就是在Node節點上運行,接受kube-scheduler的調度請求,并根據請求信息創建和運行容器。
為了讓ECI這樣的容器彈性實例與Kubernetes集成,作為其中的Node節點,微軟Azure發起了Virtual Kubelet開源項目。其基本原理是Virtual Kubelet啟動時,會偽裝成一個Work節點,也就是Virtual Node,向kube-api-server組件注冊,當有請求調度到Virtual Node時,Virtual Kubelet調用Provider的API接口,實現Pod的創建。
-
操作系統
+關注
關注
37文章
6747瀏覽量
123204 -
虛擬化技術
+關注
關注
1文章
50瀏覽量
13041 -
虛擬機
+關注
關注
1文章
908瀏覽量
28109
發布評論請先 登錄
相關推薦
評論