簡介
OpenStack + Kubernetes 是各取所長,並不只是因為慣性,而是對於多租戶需求來說,Container(容器)的隔離性還需要加強,需要加一層 VM(虛擬機) 來彌補,而 OpenStack 是很好的方案。不過,VM + Container 的模式,必然有性能的損耗,所以 OpenStack 基金會也推出一個項目叫 Kata Containers,希望減少虛擬化的開銷,兼顧容器的性能和隔離性。
永恆的只有變化,未來的業務都會運行在雲上,容器是走向 DevOps、Cloud Native(雲原生)的標准工具,已經開始走向平凡,而 Kubernetes 的編排能力,讓容器能夠落地到業務應用中,所以我們看到 Docker、Mesos、OpenStack 以及很多公有雲、私有雲服務商,都在支持 Kubernetes,大家都加入了 CNCF(雲原生計算基金會)。
總結起來,OpenStack 是兼容傳統的架構,而 Kubernetes 是面向未來的架構。
container可以運行在物理機上,也可以運行在VM上。所以kubernetes不是需要openstack的支持。但對於雲計算來說,很多IasS都通過openstack來管理虛擬機。然后用戶可以在這些虛擬機上運行docker,可以通過kubernetes進行管理。
K8s
這個集群主要包括兩個部分:
-
一個Master節點(主節點)
-
一群Node節點(計算節點)


Master節點主要還是負責管理和控制。Node節點是工作負載節點,里面是具體的容器。
深入來看這兩種節點。
首先是Master節點。


Master節點包括API Server、Scheduler、Controller manager、etcd。
API Server是整個系統的對外接口,供客戶端和其它組件調用,相當於“營業廳”。
Scheduler負責對集群內部的資源進行調度,相當於“調度室”。
Controller manager負責管理控制器,相當於“大總管”。
然后是Node節點。


Node節點包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。
Pod是Kubernetes最基本的操作單元。一個Pod代表着集群中運行的一個進程,它內部封裝了一個或多個緊密相關的容器。除了Pod之外,K8S還有一個Service的概念,一個Service可以看作一組提供相同服務的Pod的對外訪問接口。
Docker,不用說了,創建容器的。
Kubelet,主要負責監視指派到它所在Node上的Pod,包括創建、修改、監控、刪除等。
Kube-proxy,主要負責為Pod對象提供代理。
Fluentd,主要負責日志收集、存儲與查詢。
Docker和K8S都介紹完了,然而文章並沒有結束。
接下來的部分,是寫給核心網工程師甚至所有通信工程師看的。
從幾十年前的1G,到現在的4G,再到將來的5G,移動通信發生了翻天覆地的變化,核心網亦是如此。
但是,如果你仔細洞察這些變化,會發現,所謂的核心網,其實本質上並沒有發生改變,無非就是很多的服務器而已。不同的核心網網元,就是不同的服務器,不同的計算節點。
變化的,是這些“服務器”的形態和接口:形態,從機櫃單板,變成機櫃刀片,從機櫃刀片,變成X86通用刀片服務器;接口,從中繼線纜,變成網線,從網線,變成光纖。
就算變來變去,還是服務器,是計算節點,是CPU。
既然是服務器,那么就勢必會和IT雲計算一樣,走上虛擬化的道路。畢竟,虛擬化有太多的優勢,例如前文所說的低成本、高利用率、充分靈活、動態調度,等等。
前幾年,大家以為虛擬機是核心網的終極形態。目前看來,更有可能是容器化。這幾年經常說的NFV(網元功能虛擬化),也有可能改口為NFC(網元功能容器化)。
以VoLTE為例,如果按以前2G/3G的方式,那需要大量的專用設備,分別充當EPC和IMS的不同網元。


VoLTE相關的網元
而采用容器之后,很可能只需要一台服務器,創建十幾個容器,用不同的容器,來分別運行不同網元的服務程序。


這些容器,隨時可以創建,也可以隨時銷毀。還能夠在不停機的情況下,隨意變大,隨意變小,隨意變強,隨意變弱,在性能和功耗之間動態平衡。
簡直完美!
5G時代,核心網采用微服務架構,也是和容器完美搭配——單體式架構(Monolithic)變成微服務架構(Microservices),相當於一個全能型變成N個專能型。每個專能型,分配給一個隔離的容器,賦予了最大程度的靈活。
