基于自建 k8s 集群安装

概述

本文将指引你基于现有的 Kubernetes 集群,通过 Helm 命令快速部署 Rainbond。

先决条件

基于自建 k8s 集群安装 - 图1caution
  1. 集群中所有节点都需要安装 Docker 服务
  2. 集群中所有节点都需要安装 NFS 客户端挂载工具
  3. 指定的网关节点 80、443、6060、6443、7070、8443 端口可用
  4. 集群版本在 1.16 以上

准备工作

以下列出了一些在安装时可能会用到的服务或命令行工具,如果你已有对应的服务或命令行工具,可以跳过对应的步骤。

安装 Docker

如果你的集群是 Docker 作为运行时,那么此步可以忽略。否则,请保证你集群中的每个节点上都有 Docker 服务。因为平台的日志收集、构建等操作将会挂载 docker.sock

  1. curl sh.rainbond.com/install_docker | bash

安装 NFS 客户端挂载工具

默认安装时,Rainbond 会启动一个 nfs-provisioner,因此,需要节点上安装 NFS 客户端挂载工具,否则会由于无法挂载存储导致安装失败。如果你自定义配置后,使用外部的共享存储。那么此步可以忽略。

  • CentOS
  • Ubuntu
  1. yum -y install nfs-utils
  1. apt-get install nfs-common

安装 Helm 命令

我们使用 Helm 来部署 Rainbond。因此集群中执行该操作的节点必须安装 Helm 命令行工具。建议 Helm 版本大于 3.0,你可复制以下命令在你的集群中快速安装 Helm。

  1. wget https://pkg.goodrain.com/pkg/helm && chmod +x helm && mv helm /usr/local/bin/

安装 Kubectl 命令

当需要查看集群中安装状态,管理集群时,我们需要安装 Kubectl 命令行工具,你可复制以下命令在你的集群中快速安装 Kubectl 工具。

  1. wget https://grstatic.oss-cn-shanghai.aliyuncs.com/binary/kubectl -O /usr/bin/kubectl
  2. chmod +x /usr/bin/kubectl

安装 Rainbond

以下将会列出基于自建 Kubernetes 集群部署 Rainbond 的一些必要步骤,以及相关参数的简要说明。

1. 获取网关节点信息:

Rainbond 会部署一个平台的全局网关,即 rbd-gateway 组件,它是平台内所有应用的访问入口。因此它需要监听节点的 80、443、6060、6443、7070、8443 端口。所以需要选择一个端口未被占用的节点作为网关节点。

2. 生成安装命令

当我们确定下某个节点作为网关节点时,如 192.168.3.163 ,此时需要使用以下 Kubectl 命令查看节点名称。

  1. kubectl get node -owide

执行完该命令后,你将会看到以下输出

  1. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  2. 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

基于自建 k8s 集群安装 - 图2caution

以下命令仅用作示例,请不要直接复制下面命令去执行。你需要自行生成对应的安装命令。

填写完毕后,点击最下方一键生成安装命令,你将会看到以下输出:

  1. kubectl create namespace rbd-system
  2. helm repo add rainbond https://openchart.goodrain.com/goodrain/rainbond
  3. helm repo update
  4. 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 进行环境检查, 检查通过后开始安装。

环境检查

  • 当你开始执行安装命令后,如果返回如下报错,则说明环境检测失败。
  1. Error: failed pre-install: job failed: BackoffLimitExceeded
  • 此时你需要执行以下命令检查失败日志信息,根据失败信息进行处理。
  1. kubectl logs -f -l name=env-checker -n rbd-system
  • 如果一切顺利,你执行完命令后,应该会看到以下输出。
  1. NAME: rainbond
  2. LAST DEPLOYED: Fri May 27 18:09:08 2022
  3. NAMESPACE: rbd-system
  4. STATUS: deployed
  5. REVISION: 1
  6. TEST SUITE: None
  7. NOTES:
  8. 安装过程大概持续10分钟左右,如遇问题可以参考 helm 问题排查文档:
  9. https://www.rainbond.com/docs/installation/install-troubleshoot/helm-install-troubleshoot
  10. 动态查看 rainbond 安装进度命令:
  11. watch kubectl get po -n rbd-system
  12. 等待 rbd-app-ui pod 状态为 Running 时,即可访问 Rainbond 控制台,以下为访问地址:
  13. 192.168.3.163:7070

开始安装

  • 当环境检查通过后,将会开始安装 Rainbond,此时你可以通过以下命令,查看 Pod 启动状态。
  1. watch kubectl get po -n rbd-system
  • 当名称包含 rbd-app-ui 的 Pod 为 Running 状态时即安装成功。如下所示,Pod rbd-app-ui-669bb7c74b-7bmlf 为 Running 状态时,表示 Rainbond 安装成功。
  1. NAME READY STATUS RESTARTS AGE
  2. nfs-provisioner-0 1/1 Running 0 14d
  3. rbd-etcd-0 1/1 Running 0 14d
  4. rbd-hub-64777d89d8-l56d8 1/1 Running 0 14d
  5. rbd-gateway-76djb 1/1 Running 0 14d
  6. dashboard-metrics-scraper-7db45b8bb4-tcgxd 1/1 Running 0 14d
  7. rbd-mq-6b847d874b-j5jg2 1/1 Running 0 14d
  8. rbd-webcli-76b54fd7f6-jrcdj 1/1 Running 0 14d
  9. kubernetes-dashboard-fbd4fb949-2qsn9 1/1 Running 0 14d
  10. rbd-resource-proxy-547874f4d7-dh8bv 1/1 Running 0 14d
  11. rbd-monitor-0 1/1 Running 0 14d
  12. rbd-db-0 2/2 Running 0 14d
  13. rbd-eventlog-0 1/1 Running 0 14d
  14. rbd-app-ui-migrations--1-hp2qg 0/1 Completed 0 14d
  15. rbd-worker-679fd44bc7-n6lvg 1/1 Running 0 9d
  16. rbd-node-jhfzc 1/1 Running 0 9d
  17. rainbond-operator-7978d4d695-ws8bz 1/1 Running 0 9d
  18. rbd-chaos-nkxw7 1/1 Running 0 8d
  19. rbd-app-ui-669bb7c74b-7bmlf 1/1 Running 0 7d12h
  20. rbd-api-5d8bb8d57d-djx2s 1/1 Running 0 47h
  • 安装成功以后,可以通过安装界面弹出的提示访问信息,访问 Rainbond 控制台(实际访问 IP 以弹出的信息为准)

问题排查

安装过程中如果长时间未完成,那么请参考文档 Helm 安装问题排查指南,进行故障排查。或加入 微信群钉钉群 寻求帮助。

下一步

参考快速入门部署你的第一个应用。