Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


3.7.5 EADSの永続ボリュームのKubernetesマニフェストの作成(通常版限定)

EADSの永続ボリュームのKubernetesマニフェストを作成してください。詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

マネージドファイルサービスを使用する場合、次のマネージドファイルサービスを永続ボリュームとしてマウントするために必要なKubernetesマニフェストについては、それぞれの公式ドキュメントを参照してください。

永続ボリュームの種類を選択する判断基準の例を、次に示します。

永続ボリュームの種類が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(永続ボリュームクレーム)を満たすボリュームを決めて、対応するリソースのマニフェストファイルを作成してデプロイします。

表3‒14 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が重複した要素は総数から除外されます。

<永続ボリュームの作成要領>

永続ボリュームをローカル永続ボリューム(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