跳到主要内容

2 篇博文 含有标签「离线部署」

查看所有标签

离线环境 0 基础 10 分钟部署高可用 K8s?这个工具太强了!

· 阅读需 6 分钟

还在手搓 K8s 离线安装包?你该升级装备了!

对于运维和开发工程师来说,离线环境部署 Kubernetes往往是一场噩梦。

当你兴致勃勃准备大干一场时,现实通常是这样的:

  • 镜像缺失: ImagePullBackOff 成了屏幕上最常见的报错。
  • 配置繁琐: 证书、ETCD、网络插件……稍微错一个参数,集群就起不来。
  • 不仅是K8s:装好了 K8s 只是第一步,还得装监控、装网关、装管理面板……

有没有一种工具,能像在线安装一样丝滑,把 K8s 集群和管理平台一次性端进离线机房?

今天,我们要向大家推荐一款神器 ROI (Rainbond Offline Installer)

什么是 ROI?

ROI 是 Rainbond 团队专为完全离线环境打造的一站式部署工具。

它的目标很简单:让离线环境下的云原生平台交付,变得像 apt-get install 一样简单。

无论你是需要在无网的物理机房交付项目,还是在很多安全限制的内网做 POC,ROI 都能让你事半功倍。

1. 真正的全栈离线交付

ROI 不止安装 K8s。它提供了一个包含所有依赖的大礼包。

  • 自动 OS 调优: 内核参数、防火墙、Swap……ROI 自动帮你按最佳实践配置好。
  • 内置 K8s (RKE2): 基于轻量级、高安全性的 RKE2 发行版,符合生产标准。
  • 自动存储配置: 自动配置 LVM 和 NFS,不再为持久化存储头疼。
  • 内置MySQL:集群模式下默认部署 MySQL 主从集群,为 Rainbond 集群提供高可用的 MySQL。
  • 预加载镜像: 所有需要的容器镜像都已打包,无需配置任何 Registry 代理。

2. 极简操作,零门槛上手

忘掉那些几百行的 Ansible 脚本吧。ROI 的操作逻辑简单到令人发指:

  1. 下载:一条命令把所有离线包下载到本地。
  2. 分发:自动将包分发到集群所有节点。
  3. 安装:一个命令 roi up,集群就好了。

不仅仅是 K8s,更是 Rainbond

很多朋友为了离线装 K8s 费尽周折,但装好 K8s 后,如何让不懂 K8s 的开发人员也能用起来? 这才是更大的挑战。

使用 ROI,你在获得一个标准 K8s 集群的同时,还免费获得了一套强大的云原生应用管理平台 —— Rainbond

Rainbond 能为你做什么?

  • 应用视角的管理: 不需要写 Yaml,不需要懂 Service/Ingress,直接通过源码或镜像就能部署应用。
  • 应用市场: 像手机装 App 一样安装 MySQL、Redis、GitLab 等中间件。
  • ......

ROI + Rainbond,不仅解决了怎么装的问题,更解决了怎么用的问题。

快速上手演示

眼见为实,让我们看看用 ROI 部署有多简单。

第一步:在有网环境下载离线包

# 下载 ROI 工具
curl -o roi https://get.rainbond.com/roi/roi-amd64 && chmod +x roi

# 一键下载所有离线资源
./roi download

第二步:将文件拷贝到离线服务器

拿到 offline-packages 目录后,通过 U 盘或光盘拷贝到内网服务器。

第三步:单机一键安装(最简模式)

单机部署下默认会部署 NFS Server,你需要手动安装,如 yum -y install nfs-utils。

TODO:未来会支持自动部署

# 无需任何配置,直接起飞
./roi up

第四步:集群模式安装(生产模式)

只需编写一个简单的 cluster.yaml:

hosts:
- name: node-1
address: 172.16.0.134
internalAddress: 172.16.0.134
user: root
password: root

- name: node-2
address: 172.16.0.135
internalAddress: 172.16.0.135
user: root
password: root

- name: node-3
address: 172.16.0.136
internalAddress: 172.16.0.136
user: root
password: root

# Role assignment
roleGroups:
etcd: [node-1, node-2, node-3]
master: [node-1, node-2]
worker: [node-1, node-2, node-3]
nfs-server: [node-1]
rbd-gateway: [node-2, node-3]
rbd-chaos: [node-2, node-3]

# Storage configuration
storage:
nfs:
enabled: true
sharePath: /nfs-data/k8s
storageClass:
enabled: true

# Database configuration - MySQL with master-slave replication
database:
mysql:
enabled: true
masterPassword: "RootPassword123!"
replicationPassword: "ReplPassword123!"

# Rainbond configuration
rainbond:
version: v6.4.0-release

然后执行:

./roi up -f cluster.yaml

✅ 安装完成!

终端会直接输出访问地址。打开浏览器,你不仅拥有了一个 Ready 状态的 K8s 集群,更拥有了一个功能完备的 Rainbond 控制台。

离线交付不再难,用 ROI 重新定义你的部署效率。

鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程

· 阅读需 6 分钟

Rainbond V6 国产化部署教程,针对鲲鹏 CPU + 麒麟 V10 的离线环境,手把手教你从环境准备到应用上线,所有依赖包提前打包好,步骤写成傻瓜式操作指南。别说技术团队了,照着文档一步步来,让你领导来都能独立完成部署。

一、环境规划

准备至少两台机器。

架构OS作用
Arm64任意,Mac 也可以下载离线包
Arm64麒麟 V10单机部署 K8s 和 Rainbond

二、准备离线包

2.1 准备 RKE2 离线包(K8s)

下载 RKE2 v1.30.4 离线安装包。

wget https://pkg.rainbond.com/rke2/v1.30.4+rke2r1/rke2-images-linux-arm64.tar
wget https://pkg.rainbond.com/rke2/v1.30.4+rke2r1/rke2.linux-arm64.tar.gz
wget https://pkg.rainbond.com/rke2/v1.30.4+rke2r1/sha256sum-arm64.txt
wget https://rancher-mirror.rancher.cn/rke2/install.sh

2.2 准备 Helm 离线包

下载 Helm 二进制离线包。

wget https://get.helm.sh/helm-v3.18.1-linux-arm64.tar.gz

2.3 准备 Rainbond 离线包

使用脚本下载 Rainbond 离线镜像。

cat >download_rbd_images.sh <<'EOF'
#!/bin/bash

IMAGE_DOMAIN=registry.cn-hangzhou.aliyuncs.com
IMAGE_NAMESPACE=goodrain
VERSION=v6.3.0-release

image_list="${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rainbond:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-chaos:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-mq:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rainbond-operator:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-worker:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-api:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-init-probe:${VERSION}
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-monitor:v2.20.0
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/apisix-ingress-controller:v1.8.3
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/apisix:3.9.1-debian
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/local-path-provisioner:v0.0.30
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/minio:RELEASE.2023-10-24T04-42-36Z
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/rbd-db:8.0.19
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/registry:2.6.2
${IMAGE_DOMAIN}/${IMAGE_NAMESPACE}/alpine:latest"

for image in ${image_list}; do
docker pull "${image}"
done

docker save -o rainbond-offline-images.tar ${image_list}
EOF

获取 Rainbond Helm Chart 包。

git clone -b main --depth=1 https://github.com/goodrain/rainbond-chart.git

三、离线部署准备

以下操作在离线的麒麟 V10 服务器上执行。

3.1 导入离线包

导入上述准备的离线包。

3.2 安装 Helm 命令

解压离线包并将二进制移动到可执行目录。

tar zxvf helm-v3.18.1-linux-arm64.tar.gz && cp linux-arm64/helm /usr/local/bin

四、离线部署 K8s(RKE2 方式)

4.1 配置 RKE2 参数

  1. 创建 RKE2 配置文件目录。
mkdir -p /etc/rancher/rke2/config.yaml.d
  1. 配置 RKE2 参数,需禁用默认 Ingress 这会与 Rainbond 网关冲突。
cat >/etc/rancher/rke2/config.yaml.d/00-rbd.yaml <<EOL
disable:
- rke2-ingress-nginx
system-default-registry: registry.cn-hangzhou.aliyuncs.com
EOL
  1. 配置私有镜像仓库,goodrain.me 是 Rainbond 默认安装的私有镜像仓库域名。
cat >/etc/rancher/rke2/registries.yaml <<EOL
mirrors:
"goodrain.me":
endpoint:
- "https://goodrain.me"
configs:
"goodrain.me":
auth:
username: admin
password: admin1234
tls:
insecure_skip_verify: true
EOL

4.2 安装 RKE2(K8s 集群)

  1. 将 RKE2 离线镜像包放到指定目录,启动时它会自动加载离线镜像包。
mkdir -p /var/lib/rancher/rke2/agent/images
cp /root/artifacts-rke2/rke2-images* /var/lib/rancher/rke2/agent/images
# 同时将 Rainbond 离线镜像包也放入该目录
cp /root/rainbond-offline-images.tar /var/lib/rancher/rke2/agent/images
  1. 准备安装目录。
mkdir /root/artifacts-rke2
  1. rke2、rke2-images、sha256sum 移动到一个目录中,如下所示:
mv install.sh rke2* sha256sum* /root/artifacts-rke2
cd /root/artifacts-rke2
  1. 执行安装命令。
INSTALL_RKE2_ARTIFACT_PATH=/root/artifacts-rke2 sh install.sh
  1. 启动 RKE2 服务。
systemctl enable rke2-server.service && systemctl start --no-block rke2-server.service
  1. 查看启动日志,大概需要 5-10 分钟才能完全启动。
journalctl -fu rke2-server

4.3 配置 Kubectl(K8s 命令行工具)

  1. 配置 Kubectl 访问。
mkdir /root/.kube
cp /etc/rancher/rke2/rke2.yaml /root/.kube/config
cp /var/lib/rancher/rke2/bin/kubectl /usr/local/bin
  1. 验证 K8s 集群状态。
kubectl get node
kubectl get pod -n kube-system

五、离线部署 Rainbond V6

5.1 配置 Rainbond 安装参数

  1. 创建 Helm values.yaml 配置文件。
cat >values.yaml <<EOL
Cluster:
#集群入口IP,网关节点的公网IP或者内网IP,或者网关节点之上的负载均衡
gatewayIngressIPs: 192.168.0.100

nodesForGateway:
# k8s节点外网IP,没外网IP填写内网IP
- externalIP: 192.168.0.100
# k8s节点内网IP
internalIP: 192.168.0.100
# k8s节点名称,通过 kubectl get node 获取
name: ecs-c893
# - More nodes for gateway
nodesForChaos:
# k8s节点名称
- name: ecs-c893
# - More nodes for chaos
containerdRuntimePath: /var/run/k3s/containerd # containerd.sock文件路径
Component:
rbd_app_ui:
env:
- name: DISABLE_DEFAULT_APP_MARKET # 禁用默认在线开源应用商店
value: "true"
EOL

5.2 离线安装 Rainbond

  1. 执行命令离线安装 Rainbond。
helm install rainbond ./rainbond-chart --create-namespace -n rbd-system -f values.yaml
  1. 执行完安装命令后,在集群中执行以下命令查看安装状态。
watch kubectl get pod -n rbd-system
  1. 当名称包含 rbd-app-ui 的 Pod 为 Running 状态时即安装成功。如下所示,Pod rbd-app-ui-678979c995-94kzb 为 Running 状态时,表示 Rainbond 安装成功。

如果你需要在离线环境下使用 Rainbond 的源码构建功能,你需要额外下载离线源码构建的离线包,请阅读 Rainbond 离线环境下使用源码构建文档

六、部署验证

6.1 访问 Rainbond 验证

  1. 使用 gatewayIngressIPs 配置的 IP 地址访问 Rainbond,例如: http://192.168.0.100:7070

  2. 填写 Rainbond 注册信息并登录 Rainbond。

  3. 查看集群信息。

6.2 快速部署测试应用

以 Nginx 为例,在工作空间 -> 容器,通过 Nginx 镜像部署个应用。如下:

最后

按照本指南操作,即使是非技术背景的管理者也能独立完成国产化容器平台的落地。接下来,通过 Rainbond 图形化界面,无需编写代码即可将企业应用轻松迁移至 Rainbond。