3.4.5 EADSの永続ボリュームのKubernetesマニフェストの作成(通常版限定)
「5.4.6 EADSの要件(通常版限定)」に記載されているEADSの永続ボリュームの要件を満たすように、EADSの永続ボリュームのKubernetesマニフェストを作成してください。
EADSで使用する永続ボリュームの種類を「ローカル永続ボリューム(local)」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するEADSのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられます。これによって、EADSのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。
また、永続ボリュームにどの永続ボリュームクレームにバインドさせるかを指定することで、EADSの永続ボリュームとEADSの永続ボリュームクレームのバインドを必ず一対一になるようにします。
EADSの永続ボリュームのKubernetesマニフェストの作成要領を次に示します。
<見積もり要領>
デプロイするEADSの構成(EADSサーバ台数、多重度、キャッシュなど)を決め、EADSのマニュアルを参考にして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サーバ台数 |
- 注※1
-
「3.5.3 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのcachesフィールド下に登録したキャッシュ定義配列のインデックス(0から始まる)です。キャッシュ定義数分のPVCが追加されます。ただし、nameが重複した要素はインデックスから除外されます。
- 注※2
-
「3.5.3 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列のインデックス(0から始まる)です。ただし、nameが重複した要素はインデックスから除外されます。
- 注※3
-
「3.5.3 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列の総数です。ただし、nameが重複した要素は総数から除外されます。
<永続ボリュームの作成要領>
-
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‒9 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