ONAP 技术详解与应用实践 (29):ONAP 安装部署指南 2.2.2

阅读数:3 2020 年 1 月 1 日 17:47

ONAP技术详解与应用实践(29):ONAP安装部署指南 2.2.2

(在物理服务器上安装 Kubernetes)

内容简介
这是一本系统剖析 ONAP 的书籍,也是理论性与实战性兼具的网络自动化实践指导书!
本书详细全面地介绍了网络自动化的挑战和发展趋势,以及 ONAP 的概况、架构设计理念、设计原则、各模块实现细节、关键特性、应用场景和案例实践等。通过本书读者可以深入理解 ONAP,提升对网络自动化及相关领域的认知。
作者及其团队成员均是是华为网络开源领域的专家,长期参与社区的治理、贡献和回馈,致力于通过产业协作,打造统一的平台,降低集成成本,加快新技术导入,助力新一代网络运维系统升级。从另一个侧面说,本书是华为在网络开源领域的深刻洞察和见解,书中分享了华为参与网络开源的实践经验,是电信网络转型的重要参考。
本书共分为四大部分:
准备篇(第 1~2 章) 帮助读者梳理网络自动化的挑战和历史,分享了业界先进理念和经验,详细介绍了 ONAP 平台的版本能力以及与标准和开源组织的协同;详细描述了在三种环境(物理服务器、私有云环境、公有云环境)下安装部署 ONAP 的方法。
架构设计篇(第 3 章)系统介绍了 ONAP 在设计之初的目标与设计理念,从全局角度帮助读者了解 ONAP 当前架构是如何形成的,各个模块是如何划分的,最终又是如何保证系统质量的,在这个过程中开发人员分别有哪些考虑。具体包括模型驱动、DevOps、微服务化与云原生等,同时对 ONAP 数量众多的组件,从架构角度进行了归类和介绍。
关键项目篇(第 4~7 章),关键项目篇从架构角度将 ONAP 分为 ONAP 设计态组件、运行态组件、闭环组件和公共组件四部分,每个部分又包含若干项目。本书详细介绍了每个项目的功能描述、API 接口关系、关键特性、未来规划特性及开发指南等。这部分可帮助读者深入理解 ONAP 核心。
应用场景和案例实践篇(第 8~10 章),首先介绍了 ONAP 社区到 R3 版本为止的五个场景蓝图,以及基于 ONAP 来解决网络自动化和业务闭环的问题方法;然后以 CCVPN Usecase 为例,介绍 ONAP 支持一个新业务场景的设计思路、建模方法、工作流设计、闭环设计等;最后系统介绍了社区的测试认证项目 OVP、包括其发展路标、认证服务模式及未来构想。

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。运行如下命令:

复制代码
# Remove old version of docker
root@ubuntu:~# sudo apt-get remove docker docker-engine docker.io containerd runc
# Update packages
root@ubuntu:~# sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# Add docker official GPG key
root@ubuntu:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
root@ubuntu:~# sudo apt-key fingerprint 0EBFCD88
# Set up repository
root@ubuntu:~# sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
root@ubuntu:~# sudo apt-get update
# sudo apt-get install docker-ce=<VERSION_STRING>
root@ubuntu:~# sudo apt-get install docker-ce

安装结束以后,运行以下命令验证 Docker 版本:

复制代码
root@ubuntu:~# docker version

出现如下提示信息则表示安装成功(版本和时间不一定相同):

复制代码
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:17:40 2018
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.1-ce
API version: 1.35(minimum version 1.12)
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:16:13 2018
OS/Arch: linux/amd64
Experimental: false

Docker 安装成功以后就可以在服务器上部署 Kubernetes 了。

  1. 使用 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 系统,执行以下命令:

复制代码
root@ubuntu:~# apt-get update && apt-get install -y apt-transport-https curl
root@ubuntu:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
    apt-key add -
root@ubuntu:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
root@ubuntu:~# deb https://apt.kubernetes.io/ kubernetes-xenial main
root@ubuntu:~# EOF
root@ubuntu:~# apt-get update
root@ubuntu:~# apt-get install -y kubelet kubeadm kubectl
root@ubuntu:~# apt-mark hold kubelet kubeadm kubectl
root@ubuntu:~# swapoff -a

首先需要安装 Master,如果 Master 节点有外网 IP,则将此 IP 替换为,在作为 Master 节点的机器上执行以下命令:

复制代码
# If the master has an external ip, fill it in <Master Server IP Address>
root@ubuntu:~# kubeadm init --apiserver-advertise-address=<Master Server IP Address> --pod-network-cidr=10.244.0.0/16

如果 Master 节点没有外网 IP,即 Master 节点与 Worker 节点在同一子网中,则运行如下命令:

复制代码
root@ubuntu:~# kubeadm init --pod-network-cidr=10.244.0.0/16

当输出如下信息则表示 Master 节点安装成功:

复制代码
[init] Using Kubernetes version: vX.Y.Z
………
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (as a regular user):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the addon options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

配置 Kubectl(Kubernetes 的命令行工具):

复制代码
root@ubuntu:~# mkdir -p $HOME/.kube
root@ubuntu:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
root@ubuntu:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config

配置完 Kubectl 后可以运行命令检查 Master 状态,运行的命令及输出信息如下:

复制代码
root@ubuntu:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu Ready master 21m v1.13.4

设置容器网络,以 flannel 为例:

复制代码
root@ubuntu:~# kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml

一个 Master 节点可以管理多个 Worker 节点,在每个 Worker 节点运行如下命令,即可完成 Worker 节点的安装:

复制代码
root@work1:~# kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

上述命令可以在 Master 安装后的提示信息中复制,等信息都是自动生成的。如果看到以下信息,则表明安装成功:

复制代码
[preflight] Running pre-flight checks
……
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the master to see this node join the cluster.

等待一段时间你可以在 Master 上运行命令查看节点状态及检测节点是否真的加入成功,运行的如下命令:

复制代码
root@ubuntu:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu Ready master 50m v1.13.4
work1 Ready <none> 7m v1.13.4

另外,如果需要在互联网主机上调用 Kubernetes 的命令行,可以将 Master 上的~/.kube/config 文件拷贝到这台主机的~/.kube 目录下,并安装 Kubectl 工具即可。

ONAP技术详解与应用实践(29):ONAP安装部署指南 2.2.2

购书地址 https://item.jd.com/12536723.html?dist=jd

评论

发布