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