基于自建 Kubernetes 安装

概述

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

前提条件

  • Kubernetes 集群版本在 1.19-1.27 之间
  • Kubectl 命令行工具,参阅 Kubectl 安装
  • Helm 命令行工具,参阅 Helm 安装

安装 Rainbond

1. 安装 NFS 客户端挂载工具

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

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

2. 添加和更新 Helm 仓库

  1. helm repo add rainbond https://openchart.goodrain.com/goodrain/rainbond
  2. helm repo update
  3. kubectl create namespace rbd-system

3. 安装 Rainbond

Rainbond 支持 DockerContainerd 两种容器运行时,当集群环境同时安装了 DockerContainerd 时,默认会使用 Docker,你可以通过环境变量指定实际使用的容器运行时。

  • Docker
  • Containerd

使用下方命令行快速安装,所有参数均采用默认参数。

  1. helm install rainbond rainbond/rainbond-cluster -n rbd-system

如果你的集群有公网 IP,需要从外部访问,请指定 Cluster.gatewayIngressIPs 参数,如下所示,将命令中的 gatewayIngressIPs 替换成你的公网 IP 即可:

新建示例values.yaml文件:

  1. Cluster:
  2. nodesForGateway:
  3. - externalIP: 10.22.197.170 #外网IP
  4. internalIP: 10.22.197.170 #内网IP
  5. name: 10.22.197.170
  6. - externalIP: 10.22.197.171
  7. internalIP: 10.22.197.171
  8. name: 10.22.197.171

然后使用下方命令行指定values.yaml文件

  1. helm install rainbond rainbond/rainbond-cluster -f values.yaml -n rbd-system

使用下方命令行快速安装,所有参数均采用默认参数。

  1. helm install --set operator.env[0].name=CONTAINER_RUNTIME --set operator.env[0].value=containerd rainbond rainbond/rainbond-cluster -n rbd-system

如果你的集群有公网 IP,需要从外部访问,请指定 Cluster.gatewayIngressIPs 参数,如下所示,将命令中的 gatewayIngressIPs 替换成你的公网 IP 即可:

新建示例values.yaml文件:

  1. Cluster:
  2. nodesForGateway:
  3. - externalIP: 10.22.197.170 #外网IP
  4. internalIP: 10.22.197.170 #内网IP
  5. name: 10.22.197.170
  6. - externalIP: 10.22.197.171
  7. internalIP: 10.22.197.171
  8. name: 10.22.197.171
  1. helm install --set operator.env[0].name=CONTAINER_RUNTIME --set operator.env[0].value=containerd rainbond rainbond/rainbond-cluster -f values.yaml -n rbd-system

4. 安装进度查询

执行完安装命令后,在集群中执行以下命令查看安装状态。

  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-669bb7c74b-7bmlf 1/1 Running 0 7d12h
  15. rbd-app-ui-migrations--1-hp2qg 0/1 Completed 0 14d
  16. rbd-worker-679fd44bc7-n6lvg 1/1 Running 0 9d
  17. rbd-node-jhfzc 1/1 Running 0 9d
  18. rainbond-operator-7978d4d695-ws8bz 1/1 Running 0 9d
  19. rbd-chaos-nkxw7 1/1 Running 0 8d
  20. rbd-api-5d8bb8d57d-djx2s 1/1 Running 0 47h

5. 访问平台

复制如下命令,在集群中执行,可以获取到平台访问地址。如果有多个网关节点,则任意一个地址均可访问到控制台。

  1. kubectl get rainbondcluster rainbondcluster -n rbd-system -o go-template --template='{{range.spec.gatewayIngressIPs}}{{.}}:7070{{printf "\n"}}{{end}}'

6. 自定义高级配置(可选)

当你有一些额外需求,比如使用自建的镜像仓库、数据库、ETCD、StorageClass、指定网关节点、指定构建节点等。参数详细说明可以参考 values.yaml 详解

问题排查

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

下一步

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