Kubernetes跨StorageClass迁移,切换Rainbond默认SC
· 9 min read
基于主机安装或基于Kubernetes安装的 Rainbond 集群(均使用默认参数安装),默认使用的共享文件存储是 NFS ,以 Pod 方式运行在 Kubernetes 中,但这种方式也有一些无法避免的问题,比如:NFS 的 SVC 无法通信时集群无法挂载存储则导致不能使用、服务器关 机时卡在 umount
导致不能正常关机等等。
当然还有切换共享文件存储的需求,在第一次安装 Rainbond 时,大多数都使用的默认安装,使用一段时间后想切换到外部的 NFS,或者云上的 NAS等等。
在原生的 Kubernetes 集群中,通过 StorageClass 创建的 PVC 是无法修改存储后端的,需要将 PV、PVC 删除后通过新的 StorageClass 创建新的 PVC,然后再将数据迁移,再重新挂载 PVC。当有很多个 PVC 时,需要多次重复的操作。
而 Rainbond 虽然也是通过 StorageClass 创建的 PVC,但相比原生 Kubernetes 省去了创建 PV、PVC 和重新挂载的步骤,以及重复性的操作。在 Rainbond 中只需要将底层存储类更换,然后迁移 Rainbond 所创建的一整个目录,最后重新在页面中修改挂载即可完成迁移。
本文将讲述如何迁移 Rainbond 默认的 NFS 存储到外部 NFS 存储,大致分为以下几个步骤:
- 部署外部 NFS 存储并对接到 K8s 上。
- 备份 NFS 存储的数据。
- 恢复备份数据并切换 Rainbond 默认存储至外部存储。
注意:
- 关闭正在运行的应用,避免增量数据导致数据不一致。
- 组件挂载的存储必须是共享存储,其他存储则需要单独迁移。
部署 NFS 并对接到 K8s 上
外部 NFS 存储可以选择部署 NFS 双机热备或其他方案,这里就不演示了,以单节点 NFS 为例。