5.6. ゾーン全体にブリックを配置するように Heketi を設定する

Heketi は、ノードゾーンをブリック配置のヒントとして使用します。異なるゾーンでレプリカブリックを厳密に配置するように Heketi に強制するには、Heketi の "strict zone checking" 機能を有効にする必要があります。この機能を有効にすると、各ブリックセットが十分な数のゾーンに分散している場合にのみ、ボリュームが正常に作成されます。

注記

heketi の厳密なゾーンを使用するように StorageClass を設定する前に、OCS ノードに正しいゾーンでラベルが付けられていることを確認します。

この機能は、StorageClass のパラメーターセクションの必要な設定で "volumeoptions" フィールドを追加して設定できます。以下は例になります。

volumeoptions: "user.heketi.zone-checking strict"

あるいは

volumeoptions: "user.heketi.zone-checking none"

設定は以下のとおりです。

strict
異なるゾーンに少なくとも 3 つのノードが存在している必要があります(レプリカ 3 と仮定)。
none
以前(および現在のデフォルト)の動作

"strict zone checking" 機能が設定された 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 ストレージクラスを削除し、再作成します。

  1. ストレージクラスオブジェクトを yaml ファイルにエクスポートします。

    # oc get sc glusterfs-storage --export=true -o yaml > glusterfs-storage.yaml
  2. 推奨されるエディターを使用して、新しいパラメーターを追加します。
  3. ストレージクラスオブジェクトを削除し、再作成します。

    # oc delete sc glusterfs-storage
    # oc create -f glusterfs-storage.yaml