歡迎光臨
每天分享高質量文章

OpenStack與K8s結合的幾種方案之比較

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 –


    赞(0)

    分享創造快樂