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項目中。
-
虛擬機
+關注
關注
1文章
917瀏覽量
28216 -
OpenStack
+關注
關注
1文章
69瀏覽量
18920
原文標題:OpenStack與K8s結合的幾種方案之比較
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論