我有一个 OKD 集群,其中 GlusterFS 作为存储类,Heketi 作为前端。一切正常,直到破坏 Heketi 数据库。现在我无法对存储进行任何更改,也无法添加新的持久卷。GlusterFS 仍然可以很好地为 Pod 提供现有的持久卷。
我尝试使用加载拓扑文件重新创建 Heketi 数据库,但我认为 Heketi 正在尝试在已经包含具有工作 GlusterFS 的 LVM 的设备上的 LVM 上创建物理卷。当我尝试加载拓扑时,我在 Heketi 日志中看到以下行:
[kubeexec] DEBUG 2021/01/23 17:04:39 heketi/pkg/remoteexec/log/commandlog.go:34:log.(*CommandLogger).Before: Will run command [/usr/sbin/lvm pvcreate -qq --metadatasize=128M --dataalignment=256K '/dev/sdb'] on [pod:glusterfs-storage-vdm96 c:glusterfs ns:glusterfs (from host:okd-admdev-compute1 selector:glusterfs-node)]
Heketi 客户端挂起将设备添加到集群,然后超时。
[root@heketi-storage-12-wn652 tmp]# heketi-cli topology load --json=topo.json
Creating cluster ... ID: 6a65d3bce35760e5075db0cae6ed8e7e
Allowing file volumes on cluster.
Allowing block volumes on cluster.
Creating node okd-admdev-compute1 ... ID: 7da6b2b1e4f9a723cfd769618ef36a51
Adding device /dev/sdb ... Unable to add device: Initializing device /dev/sdb failed (failed to check device contents): timeout
Creating node okd-admdev-compute2 ... ID: e63f5366838492219a8f929ee4cc67a7
Adding device /dev/sdb ...
如何在不重新初始化设备的情况下重新创建 Heketi 数据库并使用现有数据重用设备?
对此没有解决方案,因为 Heketi 无法从 LVM 存储重新创建自己的数据库。但是有解决方法。