5.6. 将 Heketi 配置为每个区域间的 Place Bricks Acicks
heketi 使用节点区域作为 brick 放置的提示。要强制 Heketi 严格将副本 brick 放置在不同区域中,必须启用 Heketi 的"限制区域检查"功能。启用此功能后,只有在每个 brick 集分散到足够多区域时,才会成功创建一个卷。
在将 StorageClass 配置为使用 heketi 的严格 zoning 前,请确保将 OCS 节点标记为正确的区。
您可以通过在 StorageClass 的 parameter 部分中使用所需的设置添加 "volumeoptions" 字段来配置此功能。例如:
volumeoptions: "user.heketi.zone-checking strict"
或者
volumeoptions: "user.heketi.zone-checking none"
设置如下:
- strict
- 至少需要 3 个节点在不同的区域中(假设副本 3)存在。
- none
- 之前(及当前的默认值)的行为
配置了 "strict zone check" 功能的 StorageClass 文件示例如下所示:
# cat glusterfs-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gluster-container
provisioner: kubernetes.io/glusterfs
reclaimPolicy: Delete
parameters:
resturl: "http://heketi-storage-project.cloudapps.mystorage.com"
restuser: "admin"
volumetype: "replicate:3"
clusterid: "630372ccdc720a92c681fb928f27b53f"
secretNamespace: "default"
secretName: "heketi-secret"
volumeoptions: "user.heketi.zone-checking strict"
volumenameprefix: "test-vol"
allowVolumeExpansion: true
现有的存储类规格不可编辑。您可以使用未来所有应用程序所需的卷选项创建新存储类。但是,如果您需要更改现有存储类的设置,必须首先删除现有存储类,然后才能重新创建具有相同名称的新存储类。
执行以下命令,使用新设置删除和重新创建 glusterfs-storage 存储类:
将存储类对象导出到 yaml 文件中:
# oc get sc glusterfs-storage --export=true -o yaml > glusterfs-storage.yaml- 使用您的首选编辑器添加新参数。
删除并重新创建存储类对象:
# oc delete sc glusterfs-storage # oc create -f glusterfs-storage.yaml