Kubernetes

Heketi - 使用現有數據添加設備

  • February 25, 2021

我有一個 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 儲存重新創建自己的數據庫。但是有解決方法。

  1. 首先,我通過使用本機客戶端安裝卷來備份 GlusterFS 儲存上的所有數據。
  2. 銷毀 LVM 儲存。
  3. 讓我們從頭開始初始化 Heketi 整個集群。
  4. 重新創建卷。
  5. 使用本機客戶端裝載卷。
  6. 恢復數據。確保恢復所有屬性。

引用自:https://serverfault.com/questions/1050923