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