Настройка Persistent Volume

Для настройки Persistent Volume:

  1. Создайте файл манифеста SC_fmp.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: localdb
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cachedb
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: maindb
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: es-data
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
  1. Примените конфигурацию StorageClass с использованием файла SC_fmp.yaml:

kubectl apply -f SC_fmp.yaml

  1. Создайте локальные хранилища для PersistenVolume на каждом рабочем узле:

mkdir /mnt/pvs
cd /mnt/pvs
mkdir cachedb es-data localdb maindb standard-1 standard-2 standard-3 standard-4 standard-5
chmod 777 *

  1. Создайте файл манифеста pvs.yaml:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cachedb-1
  labels:
    type: local
spec:
  storageClassName: cachedb
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/cachedb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cachedb-2
  labels:
    type: local
spec:
  storageClassName: cachedb
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/cachedb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: es-data-1
  labels:
    type: local
spec:
  storageClassName: es-data
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/es-data"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: es-data-2
  labels:
    type: local
spec:
  storageClassName: es-data
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/es-data"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: es-data-3
  labels:
    type: local
spec:
  storageClassName: es-data
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/es-data"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: es-data-4
  labels:
    type: local
spec:
  storageClassName: es-data
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/es-data"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: localdb-1
  labels:
    type: local
spec:
  storageClassName: localdb
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/localdb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: localdb-2
  labels:
    type: local
spec:
  storageClassName: localdb
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/localdb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: maindb-1
  labels:
    type: local
spec:
  storageClassName: maindb
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/maindb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: maindb-2
  labels:
    type: local
spec:
  storageClassName: maindb
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/maindb"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-1-1
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-1"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-1-2
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-2"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-1-3
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-3"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-2-1
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-1"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-2-2
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-2"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-2-3
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-3"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-3-1
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-1"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-3-2
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-2"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-3-3
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-3"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-3-4
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-4"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-3-5
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-5"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-4-1
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-1"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-4-2
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-2"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-4-3
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-3"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-4-4
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-4"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: standard-4-5
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/pvs/standard-5"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <наименование рабочего узла>
---

В подстановках <наименование рабочего узла> задайте наименования рабочих узлов кластера. Например: worker1.k8s.internal, worker2.k8s.internal и так далее.

  1. Примените конфигурацию Persistent Volume с использованием файла pvs.yaml:

kubectl apply -f pvs.yaml

После выполнения действий будет настроен Persistent Volume.

Далее перейдите к установке продукта «Форсайт. Мобильная платформа» на кластере.

См. также:

Подготовка и развёртывание отказоустойчивого кластера на основе Deckhouse | Установка продукта «Форсайт. Мобильная платформа» на кластере