如何强制删除volume

当一个volume因为一些原因,比如硬盘损坏等,然后再尝试进行删除的时候,进度可能会一直卡在deleting中。

此时一个有效的强制删除的方法并不是进入他的控制面板进行删除,而是再这个volume对应的CRD中(replicas.longhorn.io)清空他的finalizer来继续删除的进程,你可以在K8S的一些面板中删掉这个字段,也可以使用下面这个命令:

kubectl -n longhorn-system patch replicas.longhorn.io xxxx -p '{"metadata":{"finalizers": []}}' --type=merge

xxxx为对应的pvc的名字

参考自:Longhorn volume stuck in deleting even though the underlying PV/PVC has already been deleted · Issue #1071 · longhorn/longhorn (github.com)

如何对存储类进行标签的管理

我们可能有很多不同种类的硬盘,速度更快的ssd,具有更多备份的RAID组,不安全的利旧盘等。针对不同的存储需求,我们可能需要不同的存储类,这时候,副本数一个管理是不够的,我们需要通过标签来进行管理。

首先在longhorn面板中对node和disks打上标签,在node页面的operation中,选择edit node and disks,在下图的位置添加标签

然后创建存储类,使用例如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn-single-not-stable-hdd
  annotations:
    kubesphere.io/description: 不重要的数据存储(redis,媒体站点等)
provisioner: driver.longhorn.io
parameters:
  diskSelector: 'hdd,notstable'
  nodeSelector: "storage"
  fromBackup: ''
  numberOfReplicas: '1'
  staleReplicaTimeout: '2880'
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate