ISO安装

介绍云联壹云产品的安装方法。

云联壹云 采用基于 Kubernetes Operator技术部署运行在Kubernetes上,平台服务将支持容器化方式部署运行在Kubernetes集群中,天生具备了高可用,可弹性扩展的能力。

安装准备

获取安装包

请联系销售人员获取云联壹云产品的DVD安装包。

配置要求

请按需准备部署环境,详细请参考配置要求

安装组件介绍

  • 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服务器上执行脚本方式如下:

  1. 以root用户远程连接OpenEuler 22.03 LTS SP4服务器,将DVD安装包上传到服务器。
  1. 上传完成后,将安装包以硬盘分区的形式挂载到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键确认选择。

部署控制节点

  1. 在安装配置页面,如果服务器有多块网卡,需要选择作为管理网的网卡。

  2. 保持默认勾选“First Node”,按照控制节点部署。如无特殊需求,Calico Network Type保持选择VXLAN。安装版本可以选择如下选项,如无特殊寻求,保持默认FullStack。在选择FullStack, Edge或LightEdge版本时,可以选择计算节点的运行时为虚拟化(QEMU)还是容器(containerd)。

  • FullStack: 融合云版本,部署所有服务组件,包括云管和私有云功能
  • Edge:完整私有云版本,不部署云管组件,且控制节点初始化为计算节点
  • LightEdge:最简私有云版本,仅部署虚拟化必须的最少组件,且控制节点初始化为计算节点
  • CMP:云管版本,不部署私有云组件,不将控制节点部署为计算节点
  • AI:AI云版本,部署AI组件,且控制节点初始化为容器计算节点
  1. 保持默认不勾选“High Availability”,以及选择是否勾选“Enable MINIO as backend storage engine”,如勾选该项,则将部署独立的MINIO作为镜像存储。

  2. 如果使用已有数据库,需要通过上下方向键将光标移动到“Install MySQL on Current host”,按空格键取消勾选该项后,并配置Connect 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服务器的用户密码。
![](../images/k8s-configmysql1.png)
  1. 本例选择将数据库安装在当前主机上,在安装配置页面将光标选中”OK“按钮,按enter键,在弹出的保存配置对话框中光标选中"Yes",并按enter键确认选择,开始安装。

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

  3. 在服务器中执行source ~/.bashrc命令加载kubernetes的环境变量,加载完成后,用户可通过kubectl相关命令管理云联壹云的系统组件等。

    # 查看K8s节点
    $ kubectl get node
    # 查看组件pod的运行状态,runing表示正常运行
    $ kubectl get pod --namespace onecloud 
    
  4. 在浏览器中输入https://服务器IP地址,即可打开云联壹云平台,进行初始化引导操作

部署计算节点

4.0 起,计算节点通过 k3s 加入集群:先在待加入节点挂载 ISO 并执行 prepare_offline.sh,再在控制节点用 ocboot.py add-node 完成纳管。计算节点上不要执行 ./install.sh(该脚本仅用于控制节点安装)。

控制节点需能以 root 免密 SSH 登录待加入节点。虚拟机作为宿主机、--enable-host-on-vm 等参数见 添加计算节点

  1. 将与控制节点相同版本的 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
    
  2. 在控制节点执行以下命令,将计算节点加入集群。<控制节点IP> 为已部署控制节点的实际 IP(高可用环境不要使用 VIP),<计算节点IP> 为待加入节点 IP。

    $ cd /opt/ocboot
    $ ./ocboot.py add-node --offline-data-path /opt/yunion/upgrade <控制节点IP> <计算节点IP>
    
  3. 若该节点作为容器计算节点,需指定 --runtime containerd(默认运行时为 qemu,用于虚拟化计算节点):

    $ cd /opt/ocboot
    $ ./ocboot.py add-node --offline-data-path /opt/yunion/upgrade --runtime containerd <控制节点IP> <计算节点IP>
    
  4. 命令执行完成后,可在云联壹云平台宿主机页面查看到该节点。宿主机注册后默认为禁用状态,需在界面上启用后才能创建虚拟机。

3.11 及之前:通过安装界面加入节点

该流程适用于通过 Kubernetes 安装界面将服务器加入为 Node 的版本。4.0 起请使用上文 ocboot.py add-node 流程。

本次部署在非 First Node 服务器上部署 K8s node 服务以及 host 服务。

  1. 在安装配置页面,按空格键取消勾选“First Node”,Role of K8S默认为“K8s Node”;roles默认为“Enable Host Agent”。可根据需求更改角色,本例不修改,直接保持默认。

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

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

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

  2. 安装过程较长,请耐心等待,直到安装完成。

  3. 安装过程中主要进行以下配置:

# 一些必要的环境检测 
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
![](../images/k8s-reboot.png)
  1. 以root用户ssh远程登录服务器,至此host节点部署完成。

  2. 用户部署完成后,可在云联壹云平台宿主机页面中查看到host节点。宿主机注册到云管平台上后默认为禁用状态,需要在界面上启用宿主机,启用状态的宿主机可以用于创建虚拟机。

启用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_namekubectl 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

在已部署的计算节点上编辑 /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 服务。

  1. 通过 SSH 以 root 登录 First Node。
  2. 执行以下命令。$node_name 为节点名称;$listen-interface 为 baremetal-agent 监听网卡。
```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
```
  1. 启用后查看 baremetal-agent 是否注册到控制节点:

    $ kubectl get pods --namespace onecloud | grep baremetal
    default-baremetal-agent-fb5d4b5f7-2ld8v          1/1     Running     0          15m
    
  2. 纳管物理机的预注册以及 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