云原生技術(shù):云計算管理平臺OpenStack與K8S
開源云計算技術(shù)總的來說經(jīng)歷了兩代發(fā)展,第一代是基于虛擬機的開源云計算技術(shù),以O(shè)penStack和KVM為代表,第二代是基于容器的開源云計算技術(shù),以Kubernetes和Docker為代表。總的來說,Kubernetes是管理容器的工具,OpenStack是管理VM的工具。
OpenStack和KVM
OpenStack是由NASA(美國國家航空航天局)和Rackspace合作研發(fā)并發(fā)起的項目,目前已經(jīng)擁有非常完善的生態(tài)。OpenStack基金會吸引了許多國際大企業(yè)的加入,2015年7月Google也加入了OpenStack基金會。
KVM ( Kernel-based Virtual Machine)是一種基于Linux內(nèi)核的開源虛擬化技術(shù),可以代替VMWare公司的ESXi技術(shù)。
KVM 是 Linux 的一部分,KVM 于2006年首次公布,并在一年后合并到主流 Linux 內(nèi)核版本中,Linux 2.6.20 及其更新版本都包括 KVM。KVM 可將 Linux 轉(zhuǎn)變?yōu)樘摂M機監(jiān)控程序,使主機能夠運行多個隔離的虛擬環(huán)境(VM)。
KVM作為OpenStack默認的虛擬機管理程序,大約有95%的OpenStack平臺由KVM驅(qū)動。OpenStack + KVM成為了應(yīng)用最多的開源虛擬機管理方案。
如上圖所示,KVM是最底層的虛擬機監(jiān)控程序(hypervisor),用來模擬CPU的運行,由于KVM缺少了對網(wǎng)絡(luò)和I/O的支持,所以沒法直接用它。QEMU-KVM是一個完整的模擬器,是構(gòu)建于KVM上,提供了完整的網(wǎng)絡(luò)和I/O支持。
Openstack不會直接控制QEMU-KVM,它會通過一個叫 Libvirt 的庫去間接控制。Libvirt是用于管理虛擬化平臺的開源的API,后臺程序和管理工具,可以用于管理KVM、Xen、VMware ESX、QEMU和其他虛擬化技術(shù)。
K8S的誕生
Kubernetes這個單詞來自于希臘語,含義是舵手或領(lǐng)航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個字符。K8S和Google的關(guān)系更大,K8S的前身就是Google自己搗鼓了十多年的Borg系統(tǒng)。前文《云原生技術(shù):CNCF的首位畢業(yè)生Kubernetes 》曾經(jīng)介紹過。
在Google內(nèi)部,容器技術(shù)已經(jīng)應(yīng)用了很多年,Borg系統(tǒng)運行管理著成千上萬的容器應(yīng)用。在Borg系統(tǒng)中,每時每刻都在處理來自眾多應(yīng)用程序所提交的成百上千的Job, 對這些Job進行接收、調(diào)度、啟動、停止、重啟和監(jiān)控。
作為Google的競爭技術(shù)優(yōu)勢,一開始并不打算將Borg開源。但當(dāng)Tiwtter打造出屬于自己的Borg系統(tǒng)(Mesos)時, Google也審時度勢推出了來源于自身技術(shù)理論的開源工具。在2014年6月由Google公司正式公布K8S并宣布開源。
同年7月,微軟、Red Hat、IBM、Docker、CoreOS、Mesosphere和Saltstack等公司,相繼加入K8S。之后的一年內(nèi),VMware、HP、Intel等公司,也陸續(xù)加入。K8S項目來源于Borg,可以說是凝聚了Borg設(shè)計思想的精華,也吸取了Borg系統(tǒng)中的經(jīng)驗和教訓(xùn)。
Docker技術(shù)起源于2013年3月,是基于LXC為基礎(chǔ)構(gòu)建的容器引擎,通過namespace和cgourp實現(xiàn)了資源隔離和調(diào)配,使用分層存儲來構(gòu)建鏡像。它基于Google公司推出的Go語言實現(xiàn)。關(guān)于Docker及容器技術(shù)可以參考前文《容器運行時:從Docker到Containerd 》。
K8S和Docker這一套技術(shù)組合經(jīng)常配合使用。不過近期K8S停止了對Docker容器運行時的支持,默認支持的容器運行時是Containered。前文《云原生技術(shù):K8S棄用Docker是怎么回事 》曾經(jīng)介紹過這件事,感興趣的朋友可以翻一下。
總結(jié)
Openstack的定位是IaaS平臺,主要適用于搭建私有云以及基于私有云的使用的場景。K8S的定位是PaaS平臺,尤其適合微服務(wù)應(yīng)用的部署。