Ocboot 快速安装
使用 ocboot 部署工具以 All in One 的方式快速部署私有云版本。
-
本章内容是通过部署工具快速搭建 Cloudpods 服务,如果想在生产环境部署高可用集群请参考: 高可用安装 。
-
如果使用 Ubuntu 发行版,建议使用 Ocboot k3s 快速安装 的方案,因为 Ubuntu 的其他网络组件以及内核和目前低版本的 K8s 部署方案适配的不好,会出现首次部署容器网络访问不通等问题。
环境准备
机器配置要求
操作系统:
根据 CPU 架构不同,支持的发行版也不一样,目前支持的发行版情况如下:
注:3.11、3.10等,表示发行版 Release/3.11、Release/3.10。其余同理。
3.11 | 3.10 | 3.9 | 3.8 | 3.7 | 3.6 | |
---|---|---|---|---|---|---|
CentOS 7 2009 x86_64+aarch64 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
OpenEuler 22.03 LTS Sp3 x86_64+aarch64 | ✅ | ✅ | ||||
Debian 10 x86_64+aarch64 | ✅ | ✅ | ||||
Debian 11 x86_64+aarch64 | ✅ | ✅ | ||||
Ubuntu 22.04 x86_64+aarch64 | ✅ | ✅ | ||||
CentOS Stream8 x86_64 | ✅ | ✅ | ||||
Rocky Linux 8.9 x86_64 | ✅ | ✅ | ||||
OpencloudOS 8.8 x86_64 | ✅ | ✅ | ||||
AlmaLinux 8.9 x86_64 | ✅ | ✅ | ||||
AnolisOS 8.8 x86_64 | ✅ | ✅ |
- 操作系统需要是干净的版本,因为部署工具会重头搭建指定版本的 kubernetes 集群,所以确保系统没有安装 kubernetes, docker 等容器管理工具,否则会出现冲突导致安装异常。
- 最低配置要求: CPU 8核, 内存 8GiB, 存储 200GiB。
- 虚拟机和服务使用的存储路径都在 /opt 目录下,所以理想环境下建议单独给 /opt 目录设置挂载点。
- 比如把 /dev/sdb1 单独分区做 ext4 然后通过 /etc/fstab 挂载到 /opt 目录。
- 在Debian家族的操作系统上(例如 Debian 和 Ubuntu)首次部署 ocboot 的过程中,会检测并更新 GRUB 启动选项,以便 k8s 能够正常运行,因此部署过程操作系统会重启。重启之后,请重新执行ocboot的部署即可。
安装 ansible 和 git
首先需要安装ansible和git,ansible版本要求:2.11.12 ~ 9.0.0。
- CentOS 7
- Debian 10/11
- 其它操作系统
# 本地安装 ansible 和 git
$ yum install -y epel-release git python3-pip
$ python3 -m pip install --upgrade pip setuptools wheel
# 注意:请保留下面命令里的引号
$ python3 -m pip install 'ansible<=9.0.0'
如果提示locale
相关的报错,请先执行:
if ! grep -q '^en_US.UTF-8' /etc/locale.gen; then
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen
echo 'LANG="en_US.UTF-8"' >> /etc/default/locale
source /etc/default/locale
fi
# 本地安装 ansible 和 git
$ apt install -y git python3-pip
$ python3 -m pip install --upgrade pip setuptools wheel
# 注意:请保留下面命令里的引号
$ python3 -m pip install 'ansible<=9.0.0'
备注:已知在debian 11
环境,如果/proc/cmdline
里找不到启动选项 systemd.unified_cgroup_hierarchy=0
,ocboot会自动配置相关的GRUB
选项,重建启动参数,并重启操作系统,以便 k8s
能够正常启动。
# 本地安装 ansible
$ python3 -m pip install --upgrade pip setuptools wheel
# 注意:请保留下面命令里的引号
$ python3 -m pip install 'ansible<=9.0.0'
安装 Cloudpods
部署的工具在 https://github.com/yunionio/ocboot,需要把该工具使用 git clone
下来,然后运行 run.py
脚本部署服务。操作步骤如下:
# 下载 ocboot 工具到本地
$ git clone -b release/3.11 https://github.com/yunionio/ocboot && cd ./ocboot
接下来执行 run.py
部署服务。其中 host_ip 为部署节点的 IP 地址,该参数为可选项。如果不指定则选择默认路由出去的那张网卡部署服务。如果你的节点有多张网卡,可以通过指定 host_ip 选择对应网卡监听服务。
- 中国大陆
- 其他地区
# 直接部署,会从 registry.cn-beijing.aliyuncs.com 拉取容器镜像
$ ./run.py virt <host_ip>
# 如果遇到 pip 安装包下载过慢的问题,可以用 -m 参数指定 pip 源
# 比如下面使用: https://mirrors.aliyun.com/pypi/simple/ 源
$ ./run.py -m https://mirrors.aliyun.com/pypi/simple/ virt <host_ip>
对于某些网络环境,如果出现 registry.cn-beijing.aliyuncs.com 访问缓慢或不可达,可指定镜像源: docker.io/yunion 来安装,命令如下:
IMAGE_REPOSITORY=docker.io/yunion ./run.py virt <host_ip>
./run.py
脚本会调用 ansible 部署服务,如果部署过程中遇到问题导致脚本退出,可以重复执行该脚本进行重试。
如果是基于 CentOS 7 发行版部署,会因为安装内核导致一次重启。./run.py 脚本会中断,请等待操作系统重启后,重新执行一次 ./run.py 脚本,进行后续步骤的安装。
部署完成
....
# 部署完成后会有如下输出,表示运行成功
# 浏览器打开 https://10.168.26.216 ,该 ip 为之前设置 <host_ip>
# 使用 admin/admin@123 用户密码登录就能访问前端界面
Initialized successfully!
Web page: https://10.168.26.216
User: admin
Password: admin@123
然后用浏览器访问 https://10.168.26.216 ,用户名输入 admin
,密码输入 admin@123
就会进入 Cloudpods 的界面。
使用域名访问环境时,需要修改 api_server 接入端(可选)
api_server
配置是整个平台的接入端地址,会影响前端虚拟机 VNC 或者 Web SSH、CloudShell 的连接。一般无法通过 Web SSH 进入虚拟机或者打开 CloudShell,是因为没有正确设置 api_server 配置造成的。
需要参考文档:修改服务 api_server 入口配置,根据自己环境的网络情况手动修改。
开始使用 Cloudpods
创建第一台私有云虚拟机
通过如下三步创建出第一 台虚拟机:
1. 导入镜像
在 主机
菜单,选择 系统镜像
,选择 社区镜像
,进入社区镜像列表,选择一个镜像,选择 导入
。
2. 创建网络(VPC和IP子网)
[新建VPC] 在 网络
菜单,选择 VPC
子菜单,选择 新建
。输入名称,例如 vpc0
,选择目标网段,例如 192.168.0.0/16
。点击 新建
。
[新建IP子网] VPC创建完成后,选择 IP子网
子菜单,选择 新建
。输入名称,例如 vnet0
,选择VPC为刚才创建的VPC vpc0
,选择可用区,输入 子网网段
,例如 192.168.100.0/24
。点击 新建
。
典型网络配置提供了几种常见的宿主机网络配置,请参考。
3. 创建虚拟机
刚部署好的环境中,默认会把控制节点部署为第一台计算节点(宿主机)。如需使用该节点创建虚拟机,在 主机
菜单,选择 宿主机
,选择右侧 更多
,选择 启用
。
在 主机
菜单,选择 虚拟机
,选择 新建
。在此界面输入主机名,选择镜像和IP子网,创建虚拟机。
FAQ
1. 在 All in One 部署完成后宿主机列表没有宿主机?
如下图所示,若发现环境部署完成后宿主机列表中没有宿主机,可按照以下方式进行排查
-
在控制节点排查 host 问题,请参考:Host服务问题排障技巧。
- 若日志报错信息中包含“register failed: try create network: find_matched == false”,则表示未成功创建包含宿主机的IP子网,导致宿主机注册失败,请创建包含宿主机网段的IP子网。
# 创建包含宿主机网段的IP子网
# gateway_ip 为该子网的默认路由
# start_ip 和 end_ip 为起始 ip 范围,需要包含宿主机的 ip
# mask 为子网掩码,比如:24
$ climc network-create --server-type baremetal --gateway <gateway_ip> bcast0 adm0 <start_ip> <end_ip> <mask>- 若日志报错信息中包含“name starts with letter, and contains letter, number and - only”,则表示宿主机的主机名不合规,应改成以字母开头的hostname
2. 在 All in One 中找不到虚拟机界面?
All in One 部署的节点会部署 Cloudpods host 计算服务,作为宿主机,具有创建和管理私有云虚拟机的能力。没有虚拟机界面应该是 Cloudpods 环境中没有启用宿主机。
请到 管理后台
界面,点击 主机/基础资源/宿主机
查看宿主机列表,启用相应的宿主机,刷新界面就会出现虚拟机界面。
如果要使用 Cloudpods 私有云虚拟机,并且宿主机是 CentOS 7 的发行版。需要宿主机使用 Cloudpods 编译的内核,可使用以下命令查看宿主机是否使用 Cloudpods 内核(包含 yn 关键字)。
# 查看是否使用 yn 内核
uname -a | grep yn
Linux office-controller 3.10.0-1160.6.1.el7.yn20201125.x86_64
# 如果内核不是带有 yn 关键字的版本,可能是第一次使用 ocboot 安装,重启即可进入 yn 内核
reboot
3. 为什么修改了节点的 hostname ,服务启动不了了?
Cloudpods 底层使用了 Kubernetes 管理节点,Kubernetes 节点名称依赖 hostname,改了 hostname 会导致节点无法注册到 Kubernetes 集群,所以不要修改 hostname ,如果修改了,请改之前的名称,服务就会自动恢复了。
4. 如何重装?
执行下面的步骤进行重装:
-
执行
kubeadm reset -f
删除 kubernetes 集群 -
重新运行 ocboot 的 run.py 脚本
5. 如何添加更多的节点?
参考文档 添加计算节点 。
6. 其它问题?
其它问题欢迎在 Cloudpods github issues 界面提交: https://github.com/yunionio/cloudpods/issues , 我们会尽快回复。