基于主机安装集群
基于主机安装集群是指在 Linux 裸机上使用 ROI 命令行工具安装 RKE2 Kubernetes 集群和 Rainbond 平台。相比基于 Kubernetes 的安装方式,基于主机的安装方式不依赖任何预先存在的 Kubernetes 集群,更适合在全新环境中部署 Rainbond。
前提
- 准备至少 3 台 Linux 主机及以上,所有节点内网互通。
- 生产环境建议配置 8 核 16GB 200GB。
- 所有节点可访问互联网, 至少能访问 Rainbond、RKE2、Helm 相关镜像源。
- bootstrap 节点可通过
root用户 SSH 到其他所有节点。 - 对外开放 7070、80、443、6060 端口;节点间放通 Kubernetes、RKE2 集群内部通信端口。
提示
支持 X86(amd64) 和 ARM(arm64) 架构的服务器,支持在国产化信创环境中安装部署。
步骤一:下载 ROI
在 bootstrap 节点下载 ROI CLI 命令行,请执行如下命令:
- X86(amd64)
- ARM(arm64)
curl -o roi https://get.rainbond.com/roi/roi-amd64 && chmod +x roi
curl -o roi https://get.rainbond.com/roi/roi-arm64 && chmod +x roi
查看 ROI 及默认 Rainbond 版本:
./roi version
步骤二:编写 cluster.yaml
在 bootstrap 节点创建最小化 cluster.yaml,下面是标准 3 节点配置示例:
cluster.yaml
hosts:
- name: node1 # 节点名称,任意命名但需唯一,后续 roleGroups 中会引用
address: 192.168.1.10 # 节点公网 IP 地址,如无公网 IP 则填写内网 IP
internalAddress: 192.168.1.10 # 节点内网 IP 地址
user: root # SSH 用户,仅支持 root 用户
password: "your-password" # SSH 密码
port: 22 # SSH 端口,默认 22
bootstrap: true # 标记此节点为 bootstrap 节点(执行 roi up 的节点)必须为 master 节点之一,且只能有一个
- name: node2
address: 192.168.1.11
internalAddress: 192.168.1.11
user: root
password: "your-password"
port: 22
- name: node3
address: 192.168.1.12
internalAddress: 192.168.1.12
user: root
password: "your-password"
port: 22
roleGroups:
etcd: # etcd 节点,数量必须为奇数(1、3、5)
- node1
master: # Kubernetes 控制面节点
- node1
worker: # 业务负载节点
- node1
- node2
- node3
rbd-gateway: # Rainbond 网关节点,用于对外暴露服务
- node1
rbd-chaos: # Rainbond 源码构建节点
- node1
nfs-server: # 集群内 NFS Server 节点,只能指定一个
- node1
storage:
# 由 ROI 配置 NFS Server 和自动安装 nfs-client-provisioner StorageClass,默认 SC 名称为 nfs-storage。
nfs:
enabled: true
sharePath: /nfs-data/k8s
storageClass:
enabled: true
步骤三:执行安装
./roi up -f cluster.yaml
步骤四:访问 Rainbond
安装完成后,日志中会显示访问入口:
✅ Installation completed successfully!
📝 Next Steps:
1. Access Rainbond console:
http://192.168.1.10:7070
2. Check cluster status:
kubectl get nodes
kubectl get pods -n rbd-system
生产场景 cluster.yaml 配置参考
下面示例基于 3 节点生产可用集群,展示生产环境中常见的可选配置项,包括集群内 NFS、外部 NFS/NAS、复用已有 StorageClass、ROI 部署 MySQL 主从集群、对接外部 MySQL,以及对接外部镜像仓库。
示例中的配置项用于说明不同生产场景的写法,并不表示需要全部同时启用。请根据实际环境选择其中一种存储方式和一种数据库方式。
cluster.yaml 配置参考
cluster.yaml
hosts:
- name: node1 # 节点名称,任意命名但需唯一,后续 roleGroups 中会引用
address: 192.168.1.10 # 节点公网 IP 地址,如无公网 IP 则填写内网 IP
internalAddress: 192.168.1.10 # 节点内网 IP 地址
user: root # SSH 用户,仅支持 root 用户
password: "your-password" # SSH 密码
port: 22 # SSH 端口,默认 22
bootstrap: true # 标记此节点为 bootstrap 节点(执行 roi up 的节点)必须为 master 节点之一,且只能有一个
- name: node2
address: 192.168.1.11
internalAddress: 192.168.1.11
user: root
password: "your-password"
port: 22
- name: node3
address: 192.168.1.12
internalAddress: 192.168.1.12
user: root
password: "your-password"
port: 22
roleGroups:
etcd: # etcd 节点,数量必须为奇数(1、3、5)
- node1
master: # Kubernetes 控制面节点
- node1
worker: # 业务负载节点
- node1
- node2
- node3
rbd-gateway: # Rainbond 网关节点,用于对外暴露服务
- node1
rbd-chaos: # Rainbond 源码构建节点
- node1
nfs-server: # 集群内 NFS Server 节点,只能指定一个
- node1
storage:
# 由 ROI 配置 NFS Server 和自动安装 nfs-client-provisioner StorageClass,默认 SC 名称为 nfs-storage。
nfs:
enabled: true
# server: 192.168.1.100 # 指定外部 NFS/NAS 地址。使用外部 NFS 时请注释掉 roleGroups.nfs-server 中的节点。
sharePath: /nfs-data/k8s # 无论使用集群内 NFS Server 还是外部 NFS/NAS,都需要指定共享目录路径
storageClass: # 自动安装 nfs-client-provisioner StorageClass,默认名称为 nfs-storage。
enabled: true
# 复用已有共享 StorageClass。
# 注意:storage.nfs.enabled 和 existingStorageClass.enabled 不能同时为 true。
existingStorageClass:
enabled: false
name: managed-nfs-client
registry:
# 如未指定外部镜像仓库,则会使用 Rainbond 默认启动的单节点 Docker Registry 运行在集 群内。
# Rainbond 平台使用的外部镜像仓库。
external:
enabled: false
domain: registry.com # 镜像仓库地址,需所有节点可访问
namespace: rainbond # 镜像仓库命名空间
username: username # 镜像仓库用户名
password: password # 镜像仓库密码
scheme: https # 默认 https;如果仓库是 HTTP,显式改成 http
insecureSkipVerify: false # 是否跳过 TLS 证书验证,默认为 false
database:
# 如 mysql.enabled 和 custom.enabled 都为 false,则会使用 Rainbond 默认启动的单节点 MySQL 运行在集群内。
# 由 ROI 部署 MySQL 主从集群。
mysql:
enabled: false
masterPassword: "Root123456" # Root 用户默认密码
replicationPassword: "ReplPassword123!" # 复制用户默认密 码
replicaCount: 1 # 从节点数量,默认 1 个(即 1 主 1 从)
persistence: # 是否启用持久化,默认 true
enabled: true
size: 50Gi
# storageClass 不在这里指定。
# 多节点 MySQL 持久化会使用 storage.nfs 或 existingStorageClass 推导出的共享存储。
# 使用已有外部 MySQL。
# 注意:database.mysql.enabled 和 database.custom.enabled 不能同时为 true。
custom:
enabled: false
console:
host: mysql.example.com
port: 3306
database: console
username: rainbond
password: rainbond123
region:
host: mysql.example.com
port: 3306
database: region
username: rainbond
password: rainbond123
# rainbond:
# version: v6.x.x-release # Rainbond 版本,一般不需要修改。