3.6.5 EADSの永続ボリュームのKubernetesマニフェストの作成(通常版限定)
「6.4.7 EADSの要件(通常版限定)」に記載されているEADSの永続ボリュームの要件を満たすように、EADSの永続ボリュームのKubernetesマニフェストを作成してください。
EADSで使用する永続ボリュームの種類を「ローカル永続ボリューム(local)」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するEADSのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられます。これによって、EADSのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。
また、永続ボリュームにどの永続ボリュームクレームにバインドさせるかを指定することで、EADSの永続ボリュームとEADSの永続ボリュームクレームのバインドを必ず一対一になるようにします。
EADSの永続ボリュームのKubernetesマニフェストの作成要領を次に示します。
<見積もり要領>
デプロイするEADSの構成(EADSサーバ台数、多重度、キャッシュなど)を決め、マニュアル「Elastic Application Data Store ユーザーズガイド」を参考にしてEADSサーバの各種見積もり量(使用メモリ量・ログファイル用ディスク容量・キャッシュデータファイル、およびキャッシュインデックスファイル用ディスク容量・ストアデータファイル用ディスク容量)を見積もってください。
<PVCの種類と個数について>
EADSサーバが定義するPVC(永続ボリュームクレーム)を満たすボリュームを決めて、対応するリソースのマニフェストファイルを作成してデプロイします。
ボリューム種類 |
PVC命名規則 |
個数 |
---|---|---|
ログファイル |
logs-pvc-<Serverリリース名>-eads-server-<複製インデックス> |
EADSサーバ台数 |
ストアデータファイル |
store-pvc-<Serverリリース名>-eads-server-<複製インデックス> |
EADSサーバ台数 |
キャッシュデータファイルおよびキャッシュインデックスファイル |
cache-pvc-<キャッシュ定義インデックス※1>-<Serverリリース名>-eads-server-<複製インデックス> |
キャッシュ数 ×EADSサーバ台数 |
追加ボリューム |
vol-pvc-<追加ボリューム定義インデックス※2>-<Serverリリース名>-eads-server-<複製インデックス> |
追加ボリューム数※3×EADSサーバ台数 |
<永続ボリュームの作成要領>
-
Kubernetesクラスタに起動するEADSの数×3(ログファイル用ボリューム1個、ストアデータファイル用ボリューム1個、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリューム1個、追加ボリューム用ボリューム0個の計3個)と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。
-
各永続ボリュームの名称(metadata.nameフィールド)に、ユーザ任意の名称を指定してください。
-
各永続ボリュームは、ボリュームの種類を「ローカル永続ボリューム(local)」とし、「(3) EADSの永続ボリュームマウント用ディレクトリの作成(通常版限定)」で作成するノード上のボリュームマウント用ディレクトリパスを指定してください。
-
各永続ボリュームのnodeAffinityフィールドに、EADSを配置する個々のノードを決めてノード名を指定してください。
例として、Kubernetesクラスタに起動するEADSの数が「3」で、ノードが3台(「ノード-1」、「ノード-2」、「ノード-3」)がある場合、次のように指定します。
-
「永続ボリューム-1」のnodeAffinityフィールドに、「ノード-1」を指定する
-
「永続ボリューム-2」のnodeAffinityフィールドに、「ノード-2」を指定する
-
「永続ボリューム-3」のnodeAffinityフィールドに、「ノード-3」を指定する
-
-
各永続ボリュームのcapacity.storageフィールドに、次に示す値以上のサイズを指定してください。
(a)EADSのHelmチャートのvalues.yamlのchaches-pvc-capacityパラメタに指定した値 (b)EADSのHelmチャートのvalues.yamlのlogs-capacityパラメタに指定した値 (c)EADSのHelmチャートのvalues.yamlのstore-capacityパラメタに指定した値
-
各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。
-
各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。
-
各永続ボリュームのclaimRefフィールドに、EADSを配置する個々のノードを決めてEADSのPVC(「表3‒12 EADSサーバで定義しているPVCの種類と個数」の「PVC命名規則」列参照)を指定してください。
例として、Kubernetesクラスタに起動するEADSが3台(「Pod-0」、「Pod-1」、「Pod-2」)の数が「3」で、ノードが3台(「ノード-1」、「ノード-2」、「ノード-3」)がある場合、次のように指定します。
-
nodeAffinityフィールドが「ノード-1」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-0」のPVCを指定する
-
nodeAffinityフィールドが「ノード-2」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-1」のPVCを指定する
-
nodeAffinityフィールドが「ノード-3」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-2」のPVCを指定する
-
EADSの永続ボリュームのKubernetesマニフェストの記述例を次に示します。
apiVersion: v1 kind: PersistentVolume metadata: name: eads-cache-0 spec: storageClassName: "" capacity: storage: "514Mi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-cache-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-1 claimRef: name: cache-pvc-0-eads-server-eads-server-0 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-logs-0 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-logs-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-1 claimRef: name: logs-pvc-eads-server-eads-server-0 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-store-0 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-store-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-1 claimRef: name: store-pvc-eads-server-eads-server-0 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-cache-1 spec: storageClassName: "" capacity: storage: "514Mi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-cache-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-2 claimRef: name: cache-pvc-0-eads-server-eads-server-1 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-logs-1 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-logs-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-2 claimRef: name: logs-pvc-eads-server-eads-server-1 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-store-1 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-store-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-2 claimRef: name: store-pvc-eads-server-eads-server-1 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-cache-2 spec: storageClassName: "" capacity: storage: "514Mi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-cache-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-3 claimRef: name: cache-pvc-0-eads-server-eads-server-2 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-logs-2 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-logs-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-3 claimRef: name: logs-pvc-eads-server-eads-server-2 namespace: my-namespace --- apiVersion: v1 kind: PersistentVolume metadata: name: eads-store-2 spec: storageClassName: "" capacity: storage: "1Gi" accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /eads-store-volume nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-3 claimRef: name: store-pvc-eads-server-eads-server-2 namespace: my-namespace