1、宿主机
192.168.91.164 root/*******
内存8G,空间>20G
主机名:harbor
2、安装rainbond
2.1 下载 ROI
curl -o roi https://get.rainbond.com/roi/roi-amd64 && chmod +x roi
2.2 查看 ROI 及默认 Rainbond 版本

2.3 安装
./roi up -f cluster.yaml

2.4 cluster.yaml内容

osts:
- name: harbor # 节点名称,任意命名但需唯一,后续 roleGroups 中会引用
address: 192.168.91.164 # 节点公网 IP 地址,如无公网 IP 则填写内网 IP
internalAddress: 192.168.91.164 # 节点内网 IP 地址
user: root # SSH 用户,仅支持 root 用户
password: "root" # SSH 密码
port: 22 # SSH 端口,默认 22
bootstrap: true # 标记此节点为 bootstrap 节点(执行 roi up 的节点)必须为 master 节点之一,且只能
roleGroups:
etcd: # etcd 节点,数量必须为奇数(1、3、5)
- harbor
master: # Kubernetes 控制面节点
- harbor
worker: # 业务负载节点
- harbor
rbd-gateway: # Rainbond 网关节点,用于对外暴露服务
- harbor
rbd-chaos: # Rainbond 源码构建节点
- harbor
nfs-server: # 集群内 NFS Server 节点,只能指定一个
- harbor
storage:
# 由 ROI 配置 NFS Server 和自动安装 nfs-client-provisioner StorageClass,默认 SC 名称为 nfs-storage。
nfs:
enabled: true
sharePath: /nfs-data/k8s
storageClass:
enabled: true
roi:
enterpriseID: a300b4ed90d4441d84887b85419fbae3
3、访问http://192.168.91.164:7070/

4、rainbond服务停止及启动
.

####服务停止
./rainbond_stop.sh

####服务启动
./rainbond_startup.sh
注:###先停掉 Harbor及dify服务

rainbond_stop.sh脚本内容

#!/usr/bin/env bash
# Rainbond 停止脚本:优雅停 rbd-db StatefulSet,避免数据库损坏;drain 节点驱逐业务 Pod
set -e
echo "==> 停掉 rbd-db StatefulSet(优雅停 MySQL,避免数据损坏)..."
kubectl scale statefulset -n rbd-system rbd-db --replicas=0
echo "==> 等待 10 秒让 MySQL 刷盘..."
sleep 10
echo "==> drain harbor 节点(cordon + 驱逐业务 Pod,保留 DaemonSet/静态 Pod)..."
kubectl drain harbor --ignore-daemonsets --delete-emptydir-data --force
echo "==> 当前节点状态:"
kubectl get node harbor
echo "==> 当前 Pod 状态:"
kubectl get pod -A
rainbond_startup.sh脚本内容
###先停掉 Harbor及dify服务

#!/usr/bin/env bash
# Rainbond 启动脚本:宿主机重启后先停掉 Harbor/Dify 避免端口冲突,再恢复 rbd-db 并等待所有 Pod Running
set -e
# 定位脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "==> [1/4] 先停掉 Harbor(避免开机自启抢占 80/443 端口)..."
bash "${SCRIPT_DIR}/harbor_stop.sh"
echo
echo "==> [2/4] 先停掉 Dify(避免开机自启抢占端口)..."
bash "${SCRIPT_DIR}/dify_stop.sh"
echo
echo "==> [3/4] 等待 RKE2 apiserver 可用(最多等 3 分钟)..."
for i in $(seq 1 36); do
if kubectl get --raw='/healthz' >/dev/null 2>&1; then
echo " apiserver 已就绪"
break
fi
echo " 等待 apiserver... ($i/36)"
sleep 5
done
echo "==> 等待节点 Ready..."
kubectl wait --for=condition=ready node --all --timeout=120s
echo "==> 解除 harbor 节点 SchedulingDisabled(恢复调度)..."
kubectl uncordon harbor
echo "==> 把 rbd-db StatefulSet 拉回 1 副本..."
kubectl scale statefulset -n rbd-system rbd-db --replicas=1
echo "==> 等待 rbd-system 下所有 Pod Ready(最长 5 分钟)..."
kubectl wait pod -n rbd-system --for=condition=ready --all --timeout=300s
echo
echo "==> [4/4] 当前 Pod 状态:"
kubectl get pod -n rbd-system
浙公网安备 33010602011771号