OSM+ONOS仿真网络平台搭建
昨天看了一天论文,好多都是使用OSM这个框架作为上层解析意图的,ONOS作为下层部署的,先试一试吧,能不能搭建成功,这次就是边写边搭建了
OSM平台搭建
简介
OSM的官网如下:
https://osm.etsi.org/ |
OSM is developing an open source Management and Orchestration (MANO) stack aligned with ETSI NFV Information Models. As a community-led project, OSM delivers a production-quality MANO stack that meets operators’ requirements for commercial NFV deployments.
搭建前的准备
整一个虚拟机
按照官方的意思,是用的Ubuntu22.04版本,推荐的配置为4 个 CPU、16 GB 内存、80 GB 磁盘和一个可上网的接口
Ubuntu22.04镜像下载地址:
https://releases.ubuntu.com/22.04/ |
安装好后先换源
https://blog.csdn.net/kfepiza/article/details/127781336 |
然后安装一下vm-tools
(如果没用自动安装的话),这个很关键
https://blog.csdn.net/dengjin20104042056/article/details/131737193 |
配置一下网络,否则下载会很慢。这个不做教程,自行搜索,我的端口号是7897
export http_proxy=http://127.0.0.1:7897 |
安装net-tools
sudo apt install net-tools |
安装Docker
sudo apt install docker.io |
然后换源一下
<<-'EOF'
告诉 shell 接下来的所有内容会被传递到命令 tee
,直到遇到标记 EOF
为止,用于将多行内容作为输入传递给命令。所以不需要担心输入一行之后系统就开始执行命令。 此外,若daemon.json
文件不存在,直接使用tee
命令不会报错,而是会创建名为daemon.json
的文件
sudo tee /etc/docker/daemon.json <<-'EOF' |
重启Docker环境
sudo systemctl daemon-reload && sudo systemctl restart docker |
安装SSH,方便用Xshell
操作
sudo apt install openssh-server |
关闭防火墙,避免一些神秘的问题
sudo ufw disable |
预先安装几个 OSM 安装过程中常用的工具
sudo apt update |
关闭Swap
sudo swapoff -a |
检查DNS是否有环路,查看DNS,若看到nameserver 127.0.0.53
,说明是DNS的问题
cat /etc/resolv.conf |
修改DNS
# 停用 systemd-resolved 的 DNS 代理行为 |
正式搭建
首先找到OSM的官方文档
https://osm.etsi.org/docs/user-guide/latest/ |
运行命令
wget https://osm-download.etsi.org/ftp/osm-17.0-seventeen/install_osm.sh |
注意一点,安装时不能是root的使用者以及不要有安装过kubernetes
,有安装过kubernetes
的话有机会出现安装失败的问题。
大概率是一次成功不了的,就有什么错解决什么错吧,好像是网络问题导致下面的kubernetes
等软件都没安装成功
打开魔法试一下
开始安装了,有戏…
挣扎了快一个点,又问了一下G老师,说是 kube-system
命名空间下 pods 一直卡在 0/1 ContainerCreating
这个过程,最终提示 “K8S CLUSTER IS BROKEN”,说明 k3s 启动成功但基础服务没有正常运行。恰巧看到一篇博客提到这个的
https://ithelp.ithome.com.tw/m/articles/10280369 |
上面说,此时将别的版本的image并且取代掉原本要使用的docker image,最后删除pod让他重启就没问题了
sudo docker pull omio/gcr.io.kubernetes-helm.tiller:v2.16.1 |
执行最后一条出错了
本来打算看看怎么解决,没想到过了几小时后,好像跳过这个问题了
这次看看能不能一次装成…好的,又报错了
问了一下G老师,好像最后也和kubernetes
有关,好像是K3s Kubernetes Pods 无法正常启动,可以排查一下(注:metrics-server-54fd9b65b-cpdg5应该改成自己的)
kubectl -n kube-system describe pod metrics-server-54fd9b65b-cpdg5 |
果然有问题,拉取镜像 rancher/mirrored-pause:3.6
失败,导致 pod sandbox 无法创建,试试G老师的解决方案
# 使用阿里云 pause 镜像(或 DaoCloud 也行) |
不报错了!在检测一下日志
kubectl -n kube-system logs metrics-server-54fd9b65b-cpdg5 |
没数据,我还没部署完呢,应该是正常的
然后G老师强烈建议关闭一下swap
sudo swapoff -a |
再安装一次试试!
又报错啦!!!第二天早晨跑了一下还是寄的,问题报错更靠前了
试一下G老师说是我的 /usr/local/bin/kubectl
二进制文件已彻底损坏或与系统完全不兼容,试试他的建议吧
# 先清理旧的 |
再试一下,又报错了,好消息是kubernetes
好像没问题了
万能的G老师说: Helm 试图安装一个名为 gitea
的 release,但:这个 Helm release 名字已经存在于当前 Kubernetes 集群中!试一下解决方案
# 确认是否存在旧的 release |
继续重新运行一下安装脚本
目前是问题是,Gitea 已经正常部署,但初始化脚本并没有成功创建 admin token 或写入 token 文件
可以直接手动触发初始化脚本,它会重新尝试创建 admin 用户及生成 token:
首先上官网注册一下
http://git.192.168.88.134.nip.io/ |
然后找到这个路径,写入对应信息
cd /usr/share/osm-devops/installers/mgmt-cluster/gitea |
再手动创建Token
kubectl exec -n gitea statefulset/gitea -c gitea -- \ |
然后用这个Token创建仓库
kubectl exec -n gitea statefulset/gitea -c gitea -- \ |
然后继续安装试试,理论上应该会跳过这个步骤
绷不住了,好像还是k8s的问题
# 删除原来的 kubectl |
又报了相同的错误了,我得换一个方法安装了
在油管上找到这个的安装教程了
https://www.youtube.com/watch?v=DJhtjnWdfi8 |
这里的人加上了代理的地址,我也试试
export http_proxy=http://127.0.0.1:7897 |
刚刚和G老师讨论了一下,要换一个质量好的代理,因为刚刚安装过程中又拉取失败了
但是又报错了,之前是卡在gitea
安装的部分了,之前是他没安装成功,我自己安装了一下。现在是安装和现有版本冲突了,那就先清理一下旧的吧…
helm uninstall gitea -n gitea |
再跑一次试试
这次还可以,比之前进度跑的又靠前了一点
这次中断的原因是:脚本尝试创建名为 osm-developer
的 Gitea
用户,但这个用户已经存在,因此整个安装流程被中断。
# 删除osm-developer用户 |
重新运行一下安装脚本
天呐,刚刚那个砍跨过去了!!!!MD流量用完了给我,要不可能就安装完了,重新跑的时候还得清理一下gitea
,好像他这个破脚本跳过不了有些已经配置好的
helm uninstall gitea -n gitea |
又报错了,好像是没有正确生成Token,导致后面API报错
# 生成Token |
蚌埠住了,这个不会自动跳过已安装的吗
清理一下安装好的
kubectl delete ns minio-osm-tenant |
还是卡在minio了,我remake一下,安装一下11.0的低版本试试吧
wget https://osm-download.etsi.org/ftp/osm-11.0-eleven/install_osm.sh |
检查一下日志
kubectl -n kube-system describe pod coredns-6799fbcd5-956cn |
CoreDNS 在尝试解析 DNS 时陷入了循环请求自身,即 DNS 回环错误(loop plugin)。
[FATAL] plugin/loop: Loop (127.0.0.1:58118 -> :53) detected for zone "." |
查看DNS,若看到nameserver 127.0.0.53
,说明是DNS的问题
cat /etc/resolv.conf |
修改DNS
# 停用 systemd-resolved 的 DNS 代理行为 |
又跑了一遍,这次Gitea
安装一次成功,但是Minio
安装失败了
这次换一个安装思路,让G老师把安装脚本拆分一下吧,已经成功的就不用再跑了,要不又会出现各种错误,下面是G老师帮我生成的还需要安装内容的脚本resume_failed_osm_parts.sh
|
然后运行
chmod +x resume_failed_osm_parts.sh |
也不行,刚刚解析了一下这个脚本,真正的安装是这样的,看来不好拆
$DEVOPS_PATH/installers/full_install_osm.sh -R $RELEASE -r $REPOSITORY ... |
那只有一个办法了,疯狂的remake,因为安装好之后的,在运行脚本不会跳过只会报错,这次装了很多东西,但是卡在拉取opensourcemano/airflow:11这个docker镜像,脚本找不见对应的仓库,这样吧,我先再remake一下,然后跑一次最新的脚本试试
卡在这里三回了,看来下次remake后,要提前把这个拉下来再跑那个安装脚本
sudo docker pull opensourcemano/airflow:releaseseventeen-daily |
然后remake后记得要重启,可能remake后环境还不干净