Skip to main content
Version: v5.1

Rainbond组件运维

目前Rainbond绝大多数组件都是由node维护,即由node生成服务的配置文件并启动。目前所有关于rainbond服务(除node外)的配置文件目录:/opt/rainbond/conf

服务配置说明

配置文件节点类型具体组件说明
base.yaml管理节点*rbd-repo,rbd-hub基础服务组件
db.yaml管理节点rbd-db数据库组件
dns.yaml管理节点/计算节点rbd-dnsdns组件
etcd.yaml管理节点*etcdetcd组件
etcd-proxy.yaml计算节点*etcd-proxyetcd-proxy组件
health.yaml管理节点/计算节点系统健康检查组件,如存储等
k8s-master.yaml管理节点*kube-controller-manager,kube-scheduler,kube-apiserverk8s master组件
k8s-worker.yaml计算节点*/复用的管理节点(仅第一个管理节点)kubeletk8s worker组件
master.yaml管理节点*Rainbond管理节点组件
network.yaml管理节点/计算节点calico/flannel网络组件
only_health.yaml管理节点/计算节点docker/nfs server health检查组件
ui.yaml管理节点*rbd-app-ui控制台组件

调整服务配置

需要调整组件配置,只需修改组件对应的/opt/rainbond/conf/目录下的yaml文件即可。修改完成后只需执行node service update动态更新服务配置。

# 停某服务
node service stop <服务名>
# 更新并启动某服务
node service update <服务名>
# 更新并启动所有服务配置
node service update

服务日志查看

默认所有服务组件都可以使用journalctlsystemctl命令来查看服务日志或者服务状态。
另外除nodekubelet服务外,其他服务还可以使用docker logs命令来查看服务日志。

rbd-app-ui的日志默认是写到文件,可以在/opt/rainbond/logs目录下看到相关日志信息。

节点健康检查机制

所有类型节点将由Node服务进行不间断的健康检查。节点是否健康取决于节点的物理状态、资源状态和服务状态等综合因素。Rainbond支持通过HTTP协议、TCP、UDP协议、SHELL命令三种策略定义检查项目。

若某项检查项目标识为不健康状态,当前节点将被标识为不健康状态。

对于不健康的节点Rainbond提供两级自动处理机制:

  • 检测到异常的服务一段时间依然未恢复(取决于配置的时间段)将自动重启服务。
  • 若计算节点被标注为不健康,节点控制器将会自动将其禁止应用调度直到节点恢复健康。

默认的节点检查项目

节点类型检查项目检查方式
管理节点rbd-registryHTTP
管理节点rbd-repoHTTP
管理节点rbd-dbTCP
管理节点, 计算节点rbd-dnsTCP
管理节点etcdTCP
计算节点etcd-proxyTCP
管理节点, 计算节点dockerCMD
管理节点, 计算节点storageCMD
管理节点, 计算节点local-dnsCMD
管理节点kube-apiserverHTTP
管理节点kube-schedulerTCP
管理节点kube-controller-managerTCP
管理节点, 计算节点kubeletTCP
管理节点rbd-gatewayHTTP
管理节点rbd-apiHTTP
管理节点rbd-chaosHTTP
管理节点rbd-mqHTTP
管理节点rbd-webcliHTTP
管理节点rbd-workerHTTP
管理节点rbd-monitorHTTP
管理节点rbd-eventlogHTTP
管理节点, 计算节点calicoCMD
管理节点rbd-app-uiHTTP

确定节点状态是否健康

# 在管理节点执行如下命令,观察节点状态,如果节点处于unhealth,说明节点不健康
grctl node list
# 查看不健康节点哪些服务异常
grctl node get <unhealth节点的UID>

常见的异常错误处理方式

grctl cluster 或 grctl node list 报 500错误

此错误一般是由于node组件或api组件运行异常导致,查询node组件日志查询原因。

# 查询node组件日志
journalctl -fu node

# 查询api组件日志
journalctl -fu rbd-api

查询日志若不能自己解决问题,请到Rainbond社区发帖咨询。

存储健康检测不通过

大部分情况下,存储健康检测不通过主要是存储同步有问题。

  • 确定异常节点是否挂载了/grdata
  • 确定存储是否同步
  • 手动执行/opt/rainbond/health/storage.sh,看退出码是否为0
  • 确定GlusterFS存储安装正确,且所有节点上存储服务可用

Rainbond组件异常

可以通过系统工具来查看服务状态,如

systemctl status rbd-worker
journalctl -fu rbd-worker

Rainbond自己的组件如果有异常可以来排除是否是etcd服务或者rbd-db服务异常,然后手动重启相关服务 systemctl restart <相关服务>

repo组件异常

大部分情况下请确定主机名是否能反解ip即 主机名能否ping通。

自定义检查项目

默认情况下,所有服务配置文件都在/opt/rainbond/conf/目录下

示例自定义检查项

主要配置就是health部分检查项,其他地方默认即可

目前检测方式有3种

  1. cmd 使用脚本或者命令行
  2. tcp 使用ip:port模式
  3. http 使用http协议检测
version: '2.1'
services:
- name: docker
health:
name: docker
model: cmd
address: /opt/rainbond/health/check_docker.sh
max_errors_num: 5
time_interval: 10
after:
- network.target
requires:
- network.target
only_health_check: true
start: none
restart_policy: always
restart_sec: 10