第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.html 。
2.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形态易用性的提升和能为用户带来的好处。