基于自建 k8s 集群安装
概述
本文将指引你基于现有的 Kubernetes 集群,通过 Helm 命令快速部署 Rainbond。
先决条件
caution
- 集群中所有节点都需要安装 Docker 服务
- 集群中所有节点都需要安装 NFS 客户端挂载工具
- 指定的网关节点 80、443、6060、6443、7070、8443 端口可用
- 集群版本在 1.16 以上
准备工作
以下列出了一些在安装时可能会用到的服务或命令行工具,如果你已有对应的服务或命令行工具,可以跳过对应的步骤。
安装 Docker
如果你的集群是 Docker 作为运行时,那么此步可以忽略。否则,请保证你集群中的每个节点上都有 Docker 服务。因为平台的日志收集、构建等操作将会挂载 docker.sock
。
curl sh.rainbond.com/install_docker | bash
安装 NFS 客户端挂载工具
默认安装时,Rainbond 会启动一个 nfs-provisioner
,因此,需要节点上安装 NFS 客户端挂载工具,否则会由于无法挂载存储导致安装失败。如果你自定义配置后,使用外部的共享存储。那么此步可以忽略。
- CentOS
- Ubuntu
yum -y install nfs-utils
apt-get install nfs-common
安装 Helm 命令
我们使用 Helm 来部署 Rainbond。因此集群中执行该操作的节点必须安装 Helm 命令行工具。建议 Helm 版本大于 3.0,你可复制以下命令在你的集群中快速安装 Helm。
wget https://pkg.goodrain.com/pkg/helm && chmod +x helm && mv helm /usr/local/bin/
安装 Kubectl 命令
当需要查看集群中安装状态,管理集群时,我们需要安装 Kubectl 命令行工具,你可复制以下命令在你的集群中快速安装 Kubectl 工具。
wget https://grstatic.oss-cn-shanghai.aliyuncs.com/binary/kubectl -O /usr/bin/kubectl
chmod +x /usr/bin/kubectl
安装 Rainbond
以下将会列出基于自建 Kubernetes 集群部署 Rainbond 的一些必要步骤,以及相关参数的简要说明。
1. 获取网关节点信息:
Rainbond 会部署一个平台的全局网关,即 rbd-gateway
组件,它是平台内所有应用的访问入口。因此它需要监听节点的 80、443、6060、6443、7070、8443 端口。所以需要选择一个端口未被占用的节点作为网关节点。
2. 生成安装命令
当我们确定下某个节点作为网关节点时,如 192.168.3.163
,此时需要使用以下 Kubectl 命令查看节点名称。
kubectl get node -owide
执行完该命令后,你将会看到以下输出
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
goodrain163 Ready control-plane,master 14d v1.22.3+k3s1 192.168.3.163 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.5.7-k3s2
可以看到,该节点的名称为 goodrain163
, 内部 IP 为 192.168.3.163
, 此时没有外部 IP。我们这时候使用Helm安装命令生成工具, 生成安装命令。必填参数说明如下:
参数 | 说明 |
---|---|
网关地址 | 如果有外部负载均衡,负载到你指定的网关节点上,那么填写外部的负载均衡地址,否则填写网关节点的外网/内网 IP |
网关节点 | 选择端口未被占用的节点作为网关节点,填写相关的外网 IP、内网 IP、节点名 |
以刚刚我们选定的网关节点为例。由于没有外部负载均衡地址,只有内网 IP 为 192.168.3.163
。所以网关地址可以填写内网IP 192.168.3.163
。
网关节点的节点配置中,外部 IP 和内部 IP 均填写 192.168.3.163
,节点名称填写通过 Kubectl 命令查询到的值,即 goodrain163
。
3. 自定义高级配置(可选)
当你有一些额外需求,比如使用自建的镜像仓库、数据库、ETCD、StorageClass、指定构建节点等。你可以使用Helm安装命令生成工具生成安装命令。 参数详细说明可以参考 values.yaml 详解
4. 安装 Rainbond
caution
以下命令仅用作示例,请不要直接复制下面命令去执行。你需要自行生成对应的安装命令。
填写完毕后,点击最下方一键生成安装命令,你将会看到以下输出:
kubectl create namespace rbd-system
helm repo add rainbond https://openchart.goodrain.com/goodrain/rainbond
helm repo update
helm install --set Cluster.gatewayIngressIPs=192.168.3.163 --set Cluster.enableHA=false --set Cluster.nodesForGateway[0].name=goodrain163 --set Cluster.nodesForGateway[0].externalIP=192.168.3.163 --set Cluster.nodesForGateway[0].internalIP=192.168.3.163 rainbond rainbond/rainbond-cluster -n rbd-system
该命令主要执行了以下操作:
- 创建 rbd-system 命名空间
- 添加 Rainbond 的 Helm 仓库
- 更新仓库数据
- 执行安装
你接下来可以复制生成的命令,去你的 Kubernetes 集群中进行安装。
5. 安装进度查询
执行完安装命令后,Rainbond 进行环境检查, 检查通过后开始安装。
环境检查
- 当你开始执行安装命令后,如果返回如下报错,则说明环境检测失败。
Error: failed pre-install: job failed: BackoffLimitExceeded
- 此时你需要执行以下命令检查失败日志信息,根据失败信息进行处理。
kubectl logs -f -l name=env-checker -n rbd-system
- 如果一切顺利,你执行完命令后,应该会看到以下输出。
NAME: rainbond
LAST DEPLOYED: Fri May 27 18:09:08 2022
NAMESPACE: rbd-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
安装过程大概持续10分钟左右,如遇问题可以参考 helm 问题排查文档:
https://www.rainbond.com/docs/installation/install-troubleshoot/helm-install-troubleshoot
动态查看 rainbond 安装进度命令:
watch kubectl get po -n rbd-system
等待 rbd-app-ui 的 pod 状态为 Running 时,即可访问 Rainbond 控制台,以下为访问地址:
192.168.3.163:7070
开始安装
- 当环境检查通过后,将会开始安装 Rainbond,此时你可以通过以下命令,查看 Pod 启动状态。
watch kubectl get po -n rbd-system
- 当名称包含
rbd-app-ui
的 Pod 为 Running 状态时即安装成功。如下所示,Podrbd-app-ui-669bb7c74b-7bmlf
为 Running 状态时,表示 Rainbond 安装成功。
NAME READY STATUS RESTARTS AGE
nfs-provisioner-0 1/1 Running 0 14d
rbd-etcd-0 1/1 Running 0 14d
rbd-hub-64777d89d8-l56d8 1/1 Running 0 14d
rbd-gateway-76djb 1/1 Running 0 14d
dashboard-metrics-scraper-7db45b8bb4-tcgxd 1/1 Running 0 14d
rbd-mq-6b847d874b-j5jg2 1/1 Running 0 14d
rbd-webcli-76b54fd7f6-jrcdj 1/1 Running 0 14d
kubernetes-dashboard-fbd4fb949-2qsn9 1/1 Running 0 14d
rbd-resource-proxy-547874f4d7-dh8bv 1/1 Running 0 14d
rbd-monitor-0 1/1 Running 0 14d
rbd-db-0 2/2 Running 0 14d
rbd-eventlog-0 1/1 Running 0 14d
rbd-app-ui-migrations--1-hp2qg 0/1 Completed 0 14d
rbd-worker-679fd44bc7-n6lvg 1/1 Running 0 9d
rbd-node-jhfzc 1/1 Running 0 9d
rainbond-operator-7978d4d695-ws8bz 1/1 Running 0 9d
rbd-chaos-nkxw7 1/1 Running 0 8d
rbd-app-ui-669bb7c74b-7bmlf 1/1 Running 0 7d12h
rbd-api-5d8bb8d57d-djx2s 1/1 Running 0 47h
- 安装成功以后,可以通过安装界面弹出的提示访问信息,访问 Rainbond 控制台(实际访问 IP 以弹出的信息为准)
问题排查
安装过程中如果长时间未完成,那么请参考文档 Helm 安装问题排查指南,进行故障排查。或加入 微信群、钉钉群 寻求帮助。
下一步
参考快速入门部署你的第一个应用。