OpenStack與K8S結合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack元件整合。
首先第一種方案目前也是大多數使用者選擇的方案,這種方式的優點是K8S能夠快速部署、彈性擴容,並且透過虛擬機器的多租戶間接實現了容器的多租戶,隔離性好。
缺點是容器跑在虛擬機器上,多多少少計算效能可能會有點損耗,網路的多層overlay巢狀也可能導致效能下降。
OpenStack Magnum專案是該方案實現的代表,該專案為OpenStack提供容器編排服務,透過該元件,使用者可以快速部署一個K8S、Mesos以及Swarm叢集,原理和OpenStack大多數的高階服務實現差不多,先透過heat完成資源編排(建立虛擬機器、volume、安全組等),然後透過映象裡面的heat-container-agent以及一些指令碼完成K8S、Mesos以及Swarm叢集的安裝配置。當然,透過Ironic,Magnum支援將容器編排元件直接部署在物理機(裸機)上。
第二種方案是K8S與OpenStack的各個元件整合,在OpenStack社群以及K8S社群的共同努力下,目前可以整合的元件還是挺多的,下麵簡單介紹下。
1 K8S與OpenStack Keystone整合
K8S可以和OpenStack Keystone整合,即K8S可以使用Keystone認證,參考keystone authentication kubernetes-cluster。
2 K8S與OpenStack Glance整合
這個沒有必要,因為Docker的映象是分層的,使用Registry或者Harbor即可。當然如果有必要可以使用Glance儲存Docker映象作為備份,不過更建議備份到OpenStack Swift,Registry以及Harbor都原生支援使用Swift作為儲存後端。
3 K8S與OpenStack Neutron整合
前面提到的透過Magnum把容器部署在虛擬機器,其實並沒有根本改變K8S的網路模型,K8S的底層網路依然還是諸如Flannel、Contrail等網路模型,和Neutron其實沒有多大關係。另外,前面也說了,容器執行在虛擬機器中不僅可能會導致計算效能損耗,網路的多層Overlay巢狀也可能會大大降低容器的網路效能。
其實社群已經實現K8S直接OpenStack Neutron網路整合,即kuryr-kubernetes專案。K8S的pod與OpenStack虛擬機器是平等公民,共享Neutron網路服務,K8S網路具備和OpenStack虛擬機器等同的功能,比如安全組、防火牆、QoS等。
不過遺憾的是,目前kuryr還不支援多租戶,Kuryr使用Neutron的network以及subnet都是配置寫死的,而不是建立port時指定。
4 K8S與Cinder整合
目前K8S已經實現了很多volume外掛,PV支援對接各種儲存系統,比如Ceph RBD、GlusterFS、NFS等等,參考kubernetes persistent volumes,其中就包含了Cinder,即K8S可以使用Cinder提供volume服務,這樣K8S和Nova共享一套儲存系統,都是Cinder的消費者。Cinder遮蔽了底層儲存系統,K8S直接對接Cinder,省去了一堆plugins的安裝配置。
5 K8S與Manila整合
前面提到K8S與Cinder整合,其實K8S還支援與OpenStack Manila服務整合,目前該外掛已經包含在K8S的external storage專案中。
《Linux雲端計算及運維架構師高薪實戰班》2018年11月26日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –