3.4.2 MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成
「5.4.5 Mediatorの要件」に記載されているMediatorのConsensusLogの永続ボリュームの要件を満たすように、MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストを作成してください。
Mediatorで使用する永続ボリュームの種類を「ローカル永続ボリューム(local)」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するMediatorのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられるようになります。これによって、MediatorのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。
また、Mediator専用のストレージクラスを作成することで、MediatorのConsensusLogの永続ボリュームとMediatorのConsensusLogの永続ボリュームクレームのバインドを必ず一対一になるようにします。
MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成要領を次に示します。
<ストレージクラスの作成要領>
-
ストレージクラスの名称(metadata.nameフィールド)に、ユーザ任意の名称を指定してください。ここで指定した名称は、各永続ボリュームのstorageClassNameフィールド、およびMediatorのHelmチャートのconsensusLog.storageClassNameパラメタの値に指定します。
-
ストレージクラスのprovisionerフィールドに、「kubernetes.io/no-provisioner」を指定してください。
<永続ボリュームの作成要領>
-
Kubernetesクラスタに起動するMediatorの数と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。
-
各永続ボリュームの名称(metadata.nameフィールド)に、ユーザ任意の名称を指定してください。
-
各永続ボリュームは、ボリュームの種類を「ローカル永続ボリューム(local)」とし、「(4) MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ」で作成するワーカーノード上のボリュームマウント用ディレクトリパスを指定してください。
-
各永続ボリュームのnodeAffinityフィールドに、Mediatorを配置する個々のワーカーノードを決めてノード名を指定してください。
例として、Kubernetesクラスタに起動するMediatorの数が「5」で、ワーカーノードが5台(「ワーカーノード-0」、「ワーカーノード-1」、「ワーカーノード-2」、「ワーカーノード-3」、「ワーカーノード-4」)がある場合、次のように指定します。
-
「永続ボリューム-0」のnodeAffinityフィールドに、「ワーカーノード-0」を指定する
-
「永続ボリューム-1」のnodeAffinityフィールドに、「ワーカーノード-1」を指定する
-
「永続ボリューム-2」のnodeAffinityフィールドに、「ワーカーノード-2」を指定する
-
「永続ボリューム-3」のnodeAffinityフィールドに、「ワーカーノード-3」を指定する
-
「永続ボリューム-4」のnodeAffinityフィールドに、「ワーカーノード-4」を指定する
-
-
各永続ボリュームのcapacity.storageフィールドに、次に示す値以上のサイズを指定してください。
指定サイズ=「(a) × (b) + (c)」以上のサイズ (a) MediatorのHelmチャートの.consensusLog.sizeパラメタに指定した値 (b) 1,024(1つのConsensusLogのサイズ) (c) 1,048,576(ボリュームの書き込み容量不足にならないための予備サイズ(1MB))
例として、(a)が「256」の場合、「256×1,024+1,048,576」=「1,310,720」以上となるため、capacity.storageフィールドには「2Mi」(2メビバイト)を指定します。
-
各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。
-
各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。
-
各永続ボリュームのstorageClassNameフィールドに、前述のストレージクラスで指定した名称を指定してください。
MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの記述例を次に示します。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: mediator-consensus-log
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediator-consensus-log-0
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mediator-consensus-log
local:
path: /mediator-consensus-log-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediator-consensus-log-1
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mediator-consensus-log
local:
path: /mediator-consensus-log-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediator-consensus-log-2
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mediator-consensus-log
local:
path: /mediator-consensus-log-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediator-consensus-log-3
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mediator-consensus-log
local:
path: /mediator-consensus-log-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-3
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediator-consensus-log-4
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mediator-consensus-log
local:
path: /mediator-consensus-log-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-4この例では、Kubernetesクラスタに起動するMediatorの数が「5」で、ワーカーノードが5台ある場合の例としています。