【已解决】是否可以调整Rainbond的网关安装节点和构建服务运行节点

Rainbond版本: 5.2.2
操作系统: CentOS
内核版本: 7.7
环境: 阿里云ACK
节点配置: 无master,三worker节点
安装类型: Rainbond Operator
如何复现:
尝试解决:
相关截图:
是否重新执行安装:

问题描述:
在阿里云容器服务ACK的托管模式集群中,使用Rainbond Operator安装Rainbond时,需要 配置 网关安装节点构建服务运行节点,然后由于ACK集群支持节点扩容缩容,经测试,新增节点和移除节点后,集群都可以自动调整,rainbond的管理界面上也可以看到调整后的集群内存。但是,如果移除的节点是网关安装节点或者构建服务运行节点,Rainbond就无法正常使用,而通过Rainbond Operator卸载后重新安装,则之前的所有Rainbond相关数据都会丢失。是否有办法在移除网关安装节点或者构建服务运行节点前调整Rainbond的配置,使该节点可以被移除,或者变更为不同配置的其他节点?


抄送: @dazuimao1990

即使是安装完成的 Rainbond 集群, rbd-gateway(网关服务)rbd-chaos(构建服务) 部署在哪个节点上也是可以去设置的。

方法如下:

  • 首先,需要确保 rainbond-operator 使用最新的镜像:
kubectl edit statefulsets.apps rainbond-operator -n rbd-system

确认 spec.template.spec.containers.image 字段中 rainbond-operator 使用 v1.1.1 版本(当前最新版本)镜像,如果低于这个版本,那么就修改它。

image: registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond-operator:v1.1.1
  • 其次,修改 Rainbond 自定义资源 rbdcomponents.rainbond.io 中的 rbd-gateway 以及 rbd-chaos:

(以 rbd-gateway 为例,其他组件同理)

kubectl edit rbdcomponents.rainbond.io -n rbd-system rbd-gateway

修改调度亲和性段落的描述:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - 172.24.206.41 #这个列表声明 rbd-gateway 的 pod 会调度到哪些节点上
            - 172.24.206.40

上述调度亲和性的描述中,values 指定的是 node 的名字,通过 kubectl get node 命令获取

[root@iZhp38me3xgju205i5udfnZ ~]# kubectl get node
NAME            STATUS   ROLES    AGE   VERSION
172.24.206.41   Ready    master   38d   v1.16.2
  • 最后, Rainbond 所有组件都通过 rbdcomponents.rainbond.io 这种自定义资源类型来维护、配置,也就是说,你可以通过这种方式,指定任意一个 Rainbond 组件调度到某个或者某一类节点上去。

上一条回答,给出了如何指定调度网关服务(rbd-gateway) 的方法,那么在 rbd-gateway 服务迁移到了指定的新节点之后,还需要做什么呢?根据不同的场景,要做的并不一样。

  • 第一种场景:网关外层没有负载均衡。
    这种场景下, rbd-gateway 服务所在的服务器,就是平台上运行中应用的访问入口。外部访问流量,就通过这个服务器的 IP 流入。那么,就需要修改:
  1. 应用绑定域名的解析地址。从域名解析服务供应商处变更域名的解析地址即可。
  2. 应用开启对外 TCP 协议之后,暴露 <网关 IP>:<端口>时,这个 IP 也应该被更改。

操作方式是,登陆 Rainbond 所使用的数据库,默认为 rbd-db 组件 。更新 console.region_info 表内容:

update console.region_info set wsurl='ws://<新网关IP>:6060',tcpdomain='<新网关IP>';
  • 第二种场景:网关外层具有负载均衡。比如在这位题主的 ACK 阿里云环境中,如果是部署了多个网关节点,外部用阿里的 SLB 服务进行了统一负载均衡。那么在 rbd-gateway 服务迁移到了指定的新节点之后,只需要将 SLB 负载均衡中的后端实例修改,去掉旧网关IP,加入新网关IP即可。