3.7.5 EADSの永続ボリュームのKubernetesマニフェストの作成(通常版限定)
EADSの永続ボリュームのKubernetesマニフェストを作成してください。詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。
マネージドファイルサービスを使用する場合、次のマネージドファイルサービスを永続ボリュームとしてマウントするために必要なKubernetesマニフェストについては、それぞれの公式ドキュメントを参照してください。
-
Microsoft Azure環境
-
Azure Files
-
Azure Blob Storage
-
-
Google Cloud Platform環境
-
Filestore
-
永続ボリュームの種類を選択する判断基準の例を、次に示します。
-
Blue/Greenデプロイメントのように、EADSのPodをデプロイするノードを固定したくない場合には、NFSストレージを選択してください。
-
NFSサーバを用意せず、最小限の構成としたい場合は、ローカル永続ボリューム(local)を選択してください。
-
ローカル永続ボリューム(local)を選択すると、NFSストレージよりも永続ボリュームへアクセスする性能が高くなります。
-
ローカル永続ボリューム(local)を選択すると、ノードが障害になった時の稼働率が安定します。
EADSのPodをデプロイするノードを固定することで、EADSをノードに均等に配置するためです。
永続ボリュームの種類がNFSストレージの場合は、EADSで使用する永続ボリュームの種類を「NFSストレージ」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定しないことで、EADSのPodを不特定のノード上に割り当てます。
永続ボリュームの種類がローカル永続ボリューム(local)の場合は、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サーバ台数 |
- 注※1
-
「3.8.5 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのcachesフィールド下に登録したキャッシュ定義配列のインデックス(0から始まる)です。キャッシュ定義数分のPVCが追加されます。ただし、nameが重複した要素はインデックスから除外されます。
- 注※2
-
「3.8.5 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列のインデックス(0から始まる)です。ただし、nameが重複した要素はインデックスから除外されます。
- 注※3
-
「3.8.5 EADSのHelmチャートのカスタマイズ(通常版限定)」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列の総数です。ただし、nameが重複した要素は総数から除外されます。
<永続ボリュームの作成要領>
-
Kubernetesクラスタに起動するEADSの数×3(ログファイル用ボリューム1個、ストアデータファイル用ボリューム1個、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリューム1個、追加ボリューム用ボリューム0個の計3個)と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。
-
各永続ボリュームの名称(metadata.nameフィールド)に、ユーザ任意の名称を指定してください。
-
永続ボリュームの種類がNFSストレージの場合は、StorageClassを定義し、各永続ボリュームの.spec.storageClassNameフィールドに、定義したStorageClassの名称を指定してください。
-
永続ボリュームの種類によって、次のどちらかを実施してください。
-
永続ボリュームの種類がNFSストレージの場合は、各永続ボリュームの.spec.nfsフィールドに、「3.6.6 EADSの永続ボリュームマウント用ディレクトリの作成(NFSストレージとする場合)」で作成するNFSのサーバアドレスとディレクトリパスを指定してください。
-
永続ボリュームの種類がローカル永続ボリューム(local)の場合は、各永続ボリュームの.spec.localフィールドに、「(3) EADSの永続ボリュームマウント用ディレクトリの作成(ローカル永続ボリューム(local)とする場合)」で作成するノード上のボリュームマウント用ディレクトリパスを指定してください。
-
-
永続ボリュームの種類がNFSストレージの場合は、各永続ボリュームの.spec.nodeAffinityフィールドで、EADSを配置しないノード(コントロールプレーンなど)を決めて、それ以外のノードに配置されるように指定してください。例えば、.spec.nodeAffinity.required.nodeSelectorTerms.matchExpressionsフィールドに「operator: NotIn」、「values:- control-plane-0」のように指定します。
-
永続ボリュームの種類がローカル永続ボリューム(local)の場合は、各永続ボリュームの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パラメタに指定した値
-
永続ボリュームの種類がNFSストレージの場合は、ログファイル用ボリューム、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリュームの.spec.accessModesフィールドに「ReadWriteMany」を、ストアデータファイル用ボリュームの.spec.accessModesフィールドに「ReadWriteOnce」を指定してください。
-
永続ボリュームの種類がローカル永続ボリューム(local)の場合は、各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。
-
各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。
-
各永続ボリュームのclaimRefフィールドに、EADSを配置する個々のノードを決めてEADSのPVC(「表3‒14 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を指定する
-
永続ボリュームをローカル永続ボリューム(local)とする場合とNFSストレージとする場合の、EADSの永続ボリュームのKubernetesマニフェストの記述例を次に示します。
■永続ボリュームをローカル永続ボリューム(local)とする場合
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
■永続ボリュームをNFSストレージとする場合
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eads-storage
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-cache-0
spec:
capacity:
storage: "514Mi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-cache-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: cache-pvc-0-eads-server-eads-server-0
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-logs-0
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-logs-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: logs-pvc-eads-server-eads-server-0
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-store-0
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-store-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: store-pvc-eads-server-eads-server-0
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-cache-1
spec:
capacity:
storage: "514Mi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-cache-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: cache-pvc-0-eads-server-eads-server-1
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-logs-1
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-logs-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: logs-pvc-eads-server-eads-server-1
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-store-1
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-store-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: store-pvc-eads-server-eads-server-1
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-cache-2
spec:
capacity:
storage: "514Mi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-cache-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: cache-pvc-0-eads-server-eads-server-2
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-logs-2
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-logs-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: logs-pvc-eads-server-eads-server-2
namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: eads-store-2
spec:
capacity:
storage: "1Gi"
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: eads-storage
nfs:
server: nfs-server.example.com
path: /eads-store-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- control-plane-0
claimRef:
name: store-pvc-eads-server-eads-server-2
namespace: my-namespace