ISO安装
云联壹云 采用基于 Kubernetes Operator技术部署运行在Kubernetes上,平台服务将支持容器化方式部署运行在Kubernetes集群中,天生具备了高可用,可弹性扩展的能力。
安装准备
获取安装包
请联系销售人员获取云联壹云产品的DVD安装包。
安装包下载完成后建议使用md5工具核对MD5值,确保安装包的完整性。
配置要求
请按需准备部署环境,详细请参考配置要求
安装组件介绍
- Kubernetes集群由Master(Controlplane)节点和Node节点组成。其中一套Kubernetes集群上Controlplane节点的数量必须为1,3,5个,否则可能会有问题;Node节点数量任意。
- 产品主要由Controller(控制节点)和Host(计算节点)组成。
两者关系如下图所示,一台服务器在Kubernetes集群中属于Controlplane节点或Node节点之一,在云联壹云集群上既可以作为Controller也可以作为Host节点。服务器在Kubernetes集群和云联壹云集群上的角色可以任意搭配组合。

最简组网举例
根据上面的组件介绍,可以使用两台服务器搭建最简单的云联壹云环境。

- 服务器说明:
- 控制节点(First Node)作为Kubernetes集群的Controlplane节点,云联壹云集群的Controller节点和Host节点;
- 计算节点(Not First Node)作为Kubernetes集群的Node节点,云联壹云集群的Host节点。
- 3.0版本支持离线安装,安装过程可以不访问互联网。但是后面部署过程从镜像市场导入镜像需要访问互联网。
安装过程
安装方式介绍
用户使用已安装OpenEuler 22.03 LTS SP4操作系统的服务器,挂载安装包后可使用里面的install脚本安装云联壹云。
当在已安装OpenEuler 22.03 LTS SP4 的服务器上执行脚本安装产品,需要确保服务器已已关闭selinux,且重启过服务器。若selinux未关闭,请按下面的步骤关闭selinux,并重启服务器。
# 关闭 selinux
$ setenforce 0
$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
在OpenEuler 22.03 LTS SP4服务器上执行脚本方式如下:
- 以root用户远程连接OpenEuler 22.03 LTS SP4服务器,将DVD安装包上传到服务器。
支持在服务器上使用wget命令下载DVD安装包,使用wget命令通过官网下载链接获取的安装包名称与直接下载获取的安装包名称可能不一致。但是解压缩后文件内容相同。如使用wget命令下载DVD安装包,请在mount安装包时,以实际下载的安装包名称为准。
上传完成后,将安装包以硬盘分区的形式挂载到mnt目录上,进入mnt目录,并依次执行目录下的./prepare_offline.sh和./install.sh脚本文件,进入安装配置页面。请按照安装配置内容进行配置。
# 请以从官网下载的安装包名称为准 $ mount openeuler-22.03-lts-sp4_x86_64_yunion-4.0.3.iso /mnt $ cd /mnt # 准备安装脚本所需的依赖 $ ./prepare_offline.sh # 启动安装脚本,开始安装 $ ./install.sh
安装配置
配置内容根据服务器是否为First Node以及安装的组件不同略有不同。
配置页面常用操作说明:
- enter键:enter键用于确认选择按钮。
- 空格键:选中子菜单后也可按空格键进入子菜单配置页面;空格键还可以选中或取消选择具体配置项。
- 上下方向键:用于切换上下菜单和配置项。
- Tab键或左右方向键:用于切换底侧“Select”、“OK”和“Help”按钮,按enter键确认选择。
部署控制节点
在安装配置页面,如果服务器有多块网卡,需要选择作为管理网的网卡。

保持默认勾选“First Node”,按照控制节点部署。如无特殊需求,Calico Network Type保持选择VXLAN。安装版本可以选择如下选项,如无特殊寻求,保持默认FullStack。在选择FullStack, Edge或LightEdge版本时,可以选择计算节点的运行时为虚拟化(QEMU)还是容器(containerd)。
- FullStack: 融合云版本,部署所有服务组件,包括云管和私有云功能
- Edge:完整私有云版本,不部署云管组件,且控制节点初始化为计算节点
- LightEdge:最简私有云版本,仅部署虚拟化必须的最少组件,且控制节点初始化为计算节点
- CMP:云管版本,不部署私有云组件,不将控制节点部署为计算节点
- AI:AI云版本,部署AI组件,且控制节点初始化为容器计算节点
保持默认不勾选“High Availability”,以及选择是否勾选“Enable MINIO as backend storage engine”,如勾选该项,则将部署独立的MINIO作为镜像存储。
如果使用已有数据库,需要通过上下方向键将光标移动到“Install MySQL on Current host”,按空格键取消勾选该项后,并配置Connect MySql的信息。
3.4.12版本之后才支持使用非root用户连接MySQL数据库。
- MySQL Host IP:MySQL服务器的IP地址;
- MySQL Port Number:MySQL服务器的端口号。
- MySQL Username:连接MySQL服务器的用户名,推荐使用root用户,如果使用其他用户,还需要为用户授权。
```bash
GRANT ALL PRIVILEGES ON * . * TO '<USERNAME>'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON * . * TO '<USERNAME>'@'localhost' WITH GRANT OPTION;
```
- MySQL Password:连接MySQL服务器的用户密码。

本例选择将数据库安装在当前主机上,在安装配置页面将光标选中”OK“按钮,按enter键,在弹出的保存配置对话框中光标选中"Yes",并按enter键确认选择,开始安装。

安装过程大概30分钟以上,请耐心等待,直到安装完成。

在服务器中执行
source ~/.bashrc命令加载kubernetes的环境变量,加载完成后,用户可通过kubectl相关命令管理云联壹云的系统组件等。# 查看K8s节点 $ kubectl get node # 查看组件pod的运行状态,runing表示正常运行 $ kubectl get pod --namespace onecloud在浏览器中输入https://服务器IP地址,即可打开云联壹云平台,进行初始化引导操作。
部署计算节点
4.0 起,计算节点通过 k3s 加入集群:先在待加入节点挂载 ISO 并执行 prepare_offline.sh,再在控制节点用 ocboot.py add-node 完成纳管。计算节点上不要执行 ./install.sh(该脚本仅用于控制节点安装)。
控制节点需能以 root 免密 SSH 登录待加入节点。虚拟机作为宿主机、--enable-host-on-vm 等参数见 添加计算节点。
将与控制节点相同版本的 ISO 拷贝到待部署的计算节点,以硬盘分区方式挂载到
/mnt,进入/mnt后执行./prepare_offline.sh。# 请以实际安装包文件名为准 $ mount openeuler-22.03-lts-sp4_x86_64_yunion-4.0.3.iso /mnt $ cd /mnt $ ./prepare_offline.sh在控制节点执行以下命令,将计算节点加入集群。
<控制节点IP>为已部署控制节点的实际 IP(高可用环境不要使用 VIP),<计算节点IP>为待加入节点 IP。$ cd /opt/ocboot $ ./ocboot.py add-node --offline-data-path /opt/yunion/upgrade <控制节点IP> <计算节点IP>若该节点作为容器计算节点,需指定
--runtime containerd(默认运行时为qemu,用于虚拟化计算节点):$ cd /opt/ocboot $ ./ocboot.py add-node --offline-data-path /opt/yunion/upgrade --runtime containerd <控制节点IP> <计算节点IP>命令执行完成后,可在云联壹云平台宿主机页面查看到该节点。宿主机注册后默认为禁用状态,需在界面上启用后才能创建虚拟机。
3.11 及之前:通过安装界面加入节点
该流程适用于通过 Kubernetes 安装界面将服务器加入为 Node 的版本。4.0 起请使用上文 ocboot.py add-node 流程。
本次部署在非 First Node 服务器上部署 K8s node 服务以及 host 服务。
在安装配置页面,按空格键取消勾选“First Node”,Role of K8S默认为“K8s Node”;roles默认为“Enable Host Agent”。可根据需求更改角色,本例不修改,直接保持默认。

配置First Node IP为上一章节配置的First Node的服务器IP地址。

配置Join Token为在控制节点上获取的Token值。

Join Token获取方式如下:
在控制节点上输入ocadm token create命令获取Token。
注意在刚部署成功的控制节点无法直接使用ocadm命令,需要重新登录服务器或者不断开连接直接执行source ~/.bashrc命令加载kubernetes的环境变量。
如下图所示,控制节点部署成功后,先断开并重连服务器。红圈中内容即为Token值

配置完成后将光标选中”OK“按钮,按enter键,在弹出的保存配置对话框中光标选中"Yes",并按enter键确认选择,开始安装。

安装过程较长,请耐心等待,直到安装完成。
安装过程中主要进行以下配置:
# 一些必要的环境检测
yun::init::step yun::checks::all
# 初始化环境变量
yun::init::step yun::initlocale yun::init::step yun::init::bins
# 权限设置
yun::init::step yun::privileges::requires_sudo_nopasswd
# 禁用防火墙
yun::init::step yun::system::require_firewalld_disabled
# 禁用 selinux
yun::init::step yun::system::require_selinux_disabled
# 禁用 tty
yun::init::step yun::ist::disabletty
# 解析传入的变量
yun::init::step yun::tui::initVarLoop
# 解压光盘文件里的压缩包
yun::init::step yun::ist::unpack
# 拷贝安装包到硬盘
yun::init::step yun::tui::cpiso
# 建立本地的 rpm 仓库
yun::init::step yun::ist::init::repo
# 初始化安装流程
yun::init::step yun::init::pre
# 执行 ansible 的安装脚本部署k8s集群以及OneCloud相关组件等
yun::init::step yun::ist::install
# 重启逻辑
yun::init::step yun::tui::reboot
- 当服务器当前内核(
uname -r用于查看内核版本)与产品要求“3.10.0-1062.4.3.el7.yn20191203.x86_64”不一致时,产品安装完成后将会自动重启。 - 当服务器当前内核(
uname -r用于查看内核版本)与产品要求“3.10.0-1062.4.3.el7.yn20191203.x86_64”一致时,则产品安装完成后不会自动重启。

以root用户ssh远程登录服务器,至此host节点部署完成。
用户部署完成后,可在云联壹云平台宿主机页面中查看到host节点。宿主机注册到云管平台上后默认为禁用状态,需要在界面上启用宿主机,启用状态的宿主机可以用于创建虚拟机。
平台若部署在虚拟机上且需要内置私有云功能,需要手工启用host-agent组件, 具体命令如下:
查看节点名称
kubectl get nodes
启用host-agent
ocadm node enable-host-agent –node 节点名称
启用Baremetal服务
云联壹云安装完成后默认禁用 Baremetal 服务。baremetal-agent 提供 PXE Server、DHCP、TFTP、HTTP 等能力,用于纳管物理机。物理机 BMC 若支持 Redfish 远程挂载 ISO,也可通过 ISO 引导管理。
部署成功后,需在环境中选择一个 node 运行 baremetal-agent。该服务有状态,不能多副本跨节点运行。
PXE 引导时,baremetal-agent 只处理来自 DHCP Relay 的请求,需事先在交换机配置 DHCP Relay,或使用 host 服务的 DHCP Relay。
启用 baremetal-agent
在控制节点选择一个 node 启用(可选用第一台 master)。$node_name 为 kubectl get nodes 显示的节点名称。
# 假设部署到 IP 为 10.168.222.150 的节点
$ kubectl get nodes -o wide | grep 10.168.222.150 | awk '{print $1}'
k8s-dev2
$ kubectl label nodes k8s-dev2 onecloud.yunion.io/baremetal=enable
$ kubectl get pods -n onecloud | grep baremetal
default-baremetal-agent-7c84996c9b-hhllw 1/1 Running 0 3m10s
$ climc agent-list
物理交换机配置 DHCP Relay
分别对物理机的 IPMI 网段和管理网段配置 DHCP Relay,将请求转发到 baremetal-agent 所在节点 IP。不同厂家命令不同,以下仅供参考:
interface Vlanif10
description new_test_host_net
ip address 10.168.222.1 255.255.255.0
dhcp select relay
dhcp relay binding server group baremetal-group
dhcp relay server group baremetal-group
server 10.168.222.150 0
配置 host 服务 DHCP Relay
若交换机已配置 DHCP Relay,无需再改计算节点的 dhcp_relay,可跳过本步。
在已部署的计算节点上编辑 /etc/yunion/host.conf:
dhcp_relay:
- 10.168.222.150 # baremetal-agent DHCP 监听地址
- 67 # baremetal-agent DHCP 监听端口
再到控制节点按该计算节点 IP 找到 host pod 并删除,等待服务自动重建:
$ kubectl get pods -n onecloud -o wide | grep 10.168.222.150 | grep -vE 'image|deployer'
default-host-xdc7x 2/2 Running 0 78m 10.168.222.150 k8s-dev2 <none> <none>
$ kubectl delete pods -n onecloud default-host-xdc7x
禁用 baremetal-agent
$ kubectl label nodes $node_name onecloud.yunion.io/baremetal-
部署完成后,物理机注册与管理见 物理机。
3.11 及之前:使用 ocadm 启用 Baremetal
4.0 起请使用上文节点 label 方式。以下适用于通过 ocadm baremetal enable 启用的版本。
在云联壹云环境中的任意节点上启用 Baremetal 服务。
- 通过 SSH 以 root 登录 First Node。
- 执行以下命令。
$node_name为节点名称;$listen-interface为 baremetal-agent 监听网卡。
若该节点已安装 host 服务,监听网卡请设为 br0,其余情况使用节点实际网卡名称。
```bash
# 在指定节点上启用Baremetal服务并监听网卡
$ ocadm baremetal enable --node $node_name --listen-interface $listen_interface
# 禁用Baremetal服务
$ ocadm baremetal disable --node $node_name
# 如在node1主机上启用baremetal服务,并监听br0网卡。
$ ocadm baremetal enable --node node1 --listen-interface br0
```
启用后查看 baremetal-agent 是否注册到控制节点:
$ kubectl get pods --namespace onecloud | grep baremetal default-baremetal-agent-fb5d4b5f7-2ld8v 1/1 Running 0 15m纳管物理机的预注册以及 PXE 引导需配合 DHCP Relay,即 baremetal-agent 只处理 DHCP Relay 服务器的请求。可在交换机配置 DHCP Relay,或使用 host 服务的 DHCP Relay。
# 登录到所有已经部署好计算节点的服务器上修改 /etc/yunion/host.conf,添加 dhcp_relay 配置项: dhcp_relay: - 10.168.222.198 # baremetal agent dhcp服务监听地址 - 67 # baremetal agent dhcp服务监听端口 # 查看host服务对应pod $ kubectl get pods -n onecloud -o wide | grep host default-host-p6d8h 2/2 Running 0 78m 10.168.222.189 k8s-dev1 <none> <none> default-host-xdc7x 2/2 Running 0 78m 10.168.222.150 k8s-dev2 <none> <none> # 删除host服务pod,重启host服务 $ kubectl delete pods -n onecloud default-host-p6d8h default-host-xdc7x