第2章
ONAP安裝部署指南
本章将介紹如何在Kubernetes(簡稱K8s)上安裝部署ONAP。通過這種方式,可以将ONAP各個元件以容器的形式進行部署,并通過Kubernetes進行管理。同時利用了容器輕量化及Kubenertes成熟管理的優勢,使ONAP易于安裝并且更加穩定可擴充。由于本章會涉及大量Linux操作,故需要讀者對Linux作業系統、網絡及shell指令等有一定的了解。至于容器和Kubernetes本身的操作,可以通過本章給出的執行個體進行學習。ONAP的所有元件均運作在Docker之中,而且需要一個Kubernetes叢集進行編排管理。
2.1 安裝要求說明
由于ONAP可以在多種場景下部署,對硬體及軟體分别有不同的要求,故本節将對這些做一個簡單介紹。簡單來講,ONAP的部署可以分為實體裸機部署、私有雲環境部署和公有雲環境部署。三種部署場景的基本安裝步驟如圖2-1所示。

無論哪種場景,ONAP全量安裝的總硬體最低要求都如表2-1所示。
不同版本的ONAP安裝對應的相關軟體版本要求如表2-2所示。本章ONAP的安裝講解将以C版本為例。
2.2 在實體裸機上部署ONAP
2.2.1 資源準備—安裝OS
實體裸機需要在機器上安裝Ubuntu Server 16.04 LTS。安裝過程這裡不再贅述,可以參考網上相關系統安裝指南。
系統安裝完,還需要在每台機器上進行一些簡單的配置。
1.設定iptables預設規則為ACCEPT
新安裝的系統預設的規則可能是DROP,運作下列指令修改預設為ACCEPT。
2.設定虛拟記憶體的最大值
将程序可以使用的記憶體區域設定為最大值,以避免記憶體溢出等異常。
3.安裝及配置openssh-server
在新安裝作業系統的機器裡可能沒有安裝openssh-server。需要安裝openssh-server之後才能遠端登入伺服器。安裝openssh-server的指令如下:
配置openssh-server機器的使用者名/密碼登入方式,腳本如下:
2.2.2 在實體伺服器上安裝Kubernetes
Kubernetes是Google開源的一款基于容器的叢集管理系統,是其内部Borg工具的開源版。Kubernetes是目前公認的最成熟、先進的開源容器叢集管理系統,發展非常迅猛,得到了容器生态圈廠商的全面支援。許多公有雲服務廠商都提供基于Kubernetes的基礎設施層支援。
一個Kubernetes叢集,是由Kubernetes Master及若幹Worker(節點)組成的。節點上最小的操作單元被稱為Pod:相關的一個或多個容器構成一個Pod,Pod包含的容器運作在同一個上下文中,可看作一個統一的管理單元,共享相同的volumes和network namespace空間。Kubernetes Master作為叢集的中心控制節點,會運作3個關鍵程序:kube-apiserver、kube-manager及kube-scheduler。另外,在Kubernetes的Master和Worker上還需要安裝ETCD及容器網絡插件(例如Flannel),以負責存儲Kubernetes的資訊以及同一個叢集内容器的内網規劃和支援。
- kube-apiserver:提供Kubernetes的API接口,以及相關對象增、删、改、查等的統一叢集管理入口。
- kube-manager:主要負責Kubernetes的各類控制器,提供容錯處理、擴縮容等機制。
- kube-scheduler:提供資源排程,為被管理單元配置設定資源、主機等能力。
在一個Worker節點上,會運作兩個程序:
- kubelet:可以了解為Node Agent,作為Pod的守護程序,同時和Master進行通信。
- kube-proxy:作為Worker節點上運作服務的網絡代理,提供通路服務和Pod内的流量轉發。
1.安裝及配置Docker
在作業系統上安裝Docker。
對于Ubuntu系統,先移除掉可能存在于系統上的老版本Docker,之後要增加Docker的安裝包的源以及GPG key。運作如下指令:
安裝結束以後,運作以下指令驗證Docker版本:
出現如下提示資訊則表示安裝成功(版本和時間不一定相同):
Docker安裝成功以後就可以在伺服器上部署Kubernetes了。
2.使用kubeadm安裝Kubernetes
目前Kubernetes官方提供了kubeadm工具,幫助使用者進行安裝。利用kubeadm可以友善地安裝Kubernetes的Master節點及Worker節點。安裝之前需要确認,每個節點滿足以下要求:
- 需要運作deb/rpm相容的作業系統,如Ubuntu或者CentOS。
- 2 GB及以上的RAM。
- Master節點需要至少2核CPU。
- 每個節點間必須有網絡互聯,并且可以連接配接網際網路。
選擇一台機器作為Kubernetes Master,其他的機器作為Worker節點。在安裝Worker節點之前,需要先安裝kubectl、kubeadm、kubelet及禁用系統的swap。對于Ubuntu系統,執行以下指令:
首先需要安裝Master,如果Master節點有外網IP,則将此IP替換為,在作為Master節點的機器上執行以下指令:
如果Master節點沒有外網IP,即Master節點與Worker節點在同一子網中,則運作如下指令:
當輸出如下資訊則表示Master節點安裝成功:
配置Kubectl(Kubernetes的指令行工具):
配置完Kubectl後可以運作指令檢查Master狀态,運作的指令及輸出資訊如下:
設定容器網絡,以flannel為例:
一個Master節點可以管理多個Worker節點,在每個Worker節點運作如下指令,即可完成Worker節點的安裝:
上述指令可以在Master安裝後的提示資訊中複制,等資訊都是自動生成的。如果看到以下資訊,則表明安裝成功:
等待一段時間你可以在Master上運作指令檢視節點狀态及檢測節點是否真的加入成功,運作的如下指令:
另外,如果需要在網際網路主機上調用Kubernetes的指令行,可以将Master上的~/.kube/config檔案拷貝到這台主機的~/.kube目錄下,并安裝Kubectl工具即可。
2.2.3 驗證Kubernetes是否安裝正确
一個Kubernetes叢集已經安裝完成,接下來需要驗證叢集是否正常運作。首先,在Master上建立一個nginx-app.yaml:
然後,運作測試腳本test.sh,腳本通過上面的yaml檔案建立pod和service,之後通過指令查詢其狀态。查詢腳本内容如下:
如果可以看到如下rc、pods及services的列印資訊,則表明叢集正常安裝并運作。
2.2.4 在Kubernetes上安裝部署ONAP
1.部署工具安裝
在安裝ONAP之前,需要先安裝相關的工具—Kubectl和Helm。Kubectl在2.2節中已經介紹過,其是Kubernetes的指令行工具。Helm則是Kubernetes的包管理引擎,可以有效地對基于Kubernetes的應用進行部署管理,可以對應用進行版本控制、打包、釋出、删除、更新等操作。ONAP社群的OOM(ONAP Operations Manager,ONAP操作管理工具)項目已經将ONAP的各個元件通過Helm組織起來,并支援通過Helm進行部署安裝。Helm依賴于Kubectl工具,首先是在Kubernetes的Master節點上安裝Kubectl,如果已經安裝過Kubectl可以忽略此步驟。
Ubuntu系統執行以下代碼安裝Kubectl:
接下來,就需要在Kubernets的Master節點上安裝Helm,執行以下代碼:
除了Kubectl及Helm,還需要給Kubernetes配置NFS。首先登入Master節點,建立腳本master_nfs_node.sh:
然後執行如下指令:
登入每個Worker節點,建立slave_nfs_node.sh腳本:
執行如下指令:
請確定NFS在Master節點的端口是可以通路的,NFS的端口可以通過以下指令查詢及顯示:
2.部署ONAP
登入Kubernetes Master節點使用如下指令從ONAP社群代碼倉庫下載下傳OOM代碼:
拷貝Helm的deploy插件到helm目錄下:
啟動Helm Server,作為ONAP charts的本地倉庫伺服器:
添加本地Helm倉庫:
驗證Helm倉庫是否添加成功:
可以看到如下螢幕列印:
給Helm建立權限:
建構ONAP各個元件的Helm Chart(如果想要選擇性地建構,可以編輯oom/kuber-netes/onap下的values.yaml檔案,把相應的元件開關改為true或false即可實作):
若螢幕列印如下,則表示建構成功:
顯示已經安裝的Helm Chart的方法如下:
然後執行如下指令來部署ONAP:
如果要監控安裝狀态和是否成功完成安裝,則執行以下指令:
部分顯示結果如下:
如果所有pod的STATUS都是Running則表示ONAP安裝結束,此時便可以進行health測試來驗證ONAP是否安裝成功了。如果ONAP健康檢查通過,則可認為ONAP安裝成功。運作以下指令驗證:
運作結束後若出現如下結果,則表示通過了health測試:
如果需要安裝ONAP的某一個元件,如SO,可執行以下指令,-n後面指定在Helm中的release名字:
可執行下面的指令删除ONAP:
如果需要删除Helm,需停止Helm相關服務,并且移除Kubernetes環境中的相關元件,即執行如下指令:
2.3 在OpenStack私有雲環境下部署ONAP
在OpenStack上建立虛拟機部署ONAP,需要資料中心或者實驗室有一個OpenStack的叢集。如果有OpenStack叢集,那麼可以登入OpenStack的UI界面,如圖2-2所示。
登入以後可以在UI界面建立虛拟機,如圖2-3所示,這裡的操作需要對OpenStack有一些使用經驗。在這之前可能需要建立網絡上傳鏡像等,詳細的操作可參見連結:
https://docs.openstack.org/horizon/latest/user/index.html#。
可以按照基本方式建立虛拟機,建立成功後把虛拟機當作安裝了作業系統的裸機伺服器,按照上一節的步驟安裝完成ONAP;也可以在建立虛拟機的時候配置腳本,在建立虛拟機過程中自動用腳本完成相關配置。具體的操作步驟參照社群推薦的方式使用Rancher安裝Kubernetes,具體步驟參見連結:
https://docs.onap.org/en/casablanca/submodules/oom.git/docs/oom_setup_kubernetes_rancher.html2.4 在公有雲虛拟機上部署ONAP
前面章節介紹了如何在裸機實體伺服器上及OpenStack私有雲上部署ONAP,這一節将介紹如何在公有雲上部署ONAP。接下來将以華為公有雲為例,介紹如何利用公有雲的服務,快速部署Kubernetes及ONAP。
1.新增賬號
首先通路華為公有雲的首頁
https://www.huaweicloud.com/,注冊華為公有雲的賬号,如圖2-4所示。
賬号注冊完成後,依照比對的類型完成實名認證後即可訂購公有雲相關服務了,如圖2-5所示。
2.購買彈性雲伺服器
賬号注冊及實名認證完成後,點選服務清單中的彈性雲伺服器(Elastic Cloud Server,ECS)訂購雲伺服器(虛拟機),以便用于部署ONAP。部署ONAP最低的資源要求可以參考2.1節的内容,讀者可以按照自己的需要購買多個ECS伺服器,如圖2-6所示。
3. CCE環境準備
ECS伺服器購買完成後,将基于購買的ECS伺服器建立雲容器引擎CCE(Cloud Container Engine,雲容器引擎,一種Kubernetes叢集服務)。和購買ECS伺服器類似,點選服務清單選擇雲容器引擎CCE進行購買。
購買Kubernetes叢集和購買CCE的界面分别如圖2-7和圖2-8所示。
叢集的管理節點規模可以按照購買的ECS伺服器個數來選擇。完成Kubernetes叢集的購買後就可以新增節點了,如圖2-9所示。
可以檢視節點資訊,如圖2-10所示。
然後安裝Kubectl,作為Kubernetes控制節點的用戶端。目前支援兩種安裝方式:第一種是選擇一台和ONAP-Node在一個VPC下的伺服器;第二種就是選擇一台在網際網路上的伺服器。具體的安裝步驟參考叢集管理頁面的Kubectl詳細安裝說明。在安裝完成Kubernetes後根據2.2.4節介紹的步驟安裝ONAP即可。
2.5 ONAP as A Service展望
SaaS是SoftwareasaService(軟體即服務)的簡稱,是随着網際網路技術的發展和應用軟體的成熟,在21世紀開始興起的一種完全創新的軟體應用模式。SaaS與on-demand software(按需軟體)、the application service provider(ASP,應用服務提供商)、hosted soft-ware(托管軟體)具有相似的含義。與傳統軟體需要先安裝在本地再使用不同,SaaS是一種通過網際網路提供軟體的模式。廠商将應用軟體統一部署在自己的伺服器上,客戶可以根據自己的實際需求,通過網際網路向廠商定購所需的應用軟體服務,按定購的服務多少和時間長短向廠商支付費用,最後通過網際網路獲得廠商提供的服務。
SaaS形态的軟體消除了傳統軟體在每一個使用者主機上對軟體安裝、更新和維護的工作,可以有效降低成本。借鑒SaaS軟體的思路,将ONAP部署在公有雲中,可以有效減少本地搭建ONAP環境的開銷,包括伺服器的硬體資源開銷和搭建基礎設施層的人力開銷等。而對雲上的ONAP進一步改造也可以将ONAP作為SaaS服務提供出來,一些設計态元件的功能和認證功能甚至可以獨立對外提供服務。
實作ONAPaaS将很大程度上提升ONAP的易用性:
- 不同地域的網絡設計人員可以登入同一個位于雲端的ONAP環境進行合作設計開發,提高網絡設計的效率。
- 運維人員可以遠端登入ONAP并對指定地域的網絡進行管理,不同地區的網絡運作事件都将上報給雲端的ONAP,事件的處理和政策的制定将變得簡單。
- 對于VNF的認證也隻需要VNF供應商上傳VNF Package到雲端的ONAP,就能友善地進行認證測試,無須額外搭建測試環境來進行驗證。
- 對雲端的ONAP進行更新維護後,所有使用者都能立即獲得最新的ONAP功能,不再需要對每一個區域的ONAP進行單獨更新操作。
2.6 本章小結
本章介紹了在三種場景下如何使用OOM在Kubernetes上安裝部署ONAP。三種場景分别是實體裸機、OpenStack私有雲環境和公有雲環境。使用OOM可以将ONAP各個元件以容器的形式進行部署,并通過Kubernetes進行管理。同時利用了容器輕量化以及Kubernetes成熟管理的優勢,使得ONAP更易于安裝并且更加穩定可擴充。
本章首先介紹了安裝ONAP各個版本的軟體要求。之後詳細介紹了在裸機伺服器資源準備、Kubernetes部署驗證及在Kubernetes上用OOM安裝部署OANP的方法。ONAP本身支援單個元件的安裝,這為ONAP服務化提供了基礎。需要熟練掌握ONAP的部署和調試,還需要讀者進一步熟悉Kubernetes以及Helm工具。之後兩小節簡單介紹了在資料中心中如何在OpenStack上部署ONAP及在公有雲上部署ONAP。本章以Casablanca為例,其他版本也可按照相同的方法安裝部署。最後,對ONAP的SaaS化進行了展望,展示了ONAP的SaaS形态易用性的提升和能為使用者帶來的好處。