Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Пользовательские сценарии

Для того, чтобы иметь возможность подключать Persistent Volumes из хранилища Longhorn, необходимо добавить узлы, на которых будут запускаться пользовательские Pod-ы, в список clientNodes в LonghornClusterConfig или сделать их частью storagePool.

На узлах, перечисленных в списке clientNodes, не должно быть никаких Taints.

После успешного применения конфигурации нужно создать Persistent Volumes на хранилище Longhorn.

1. Создание тома с доступом RWO и его подключение к приложению

  1. Создайте том.

    Пример манифеста Kubernetes для создания тома (Persistent Volume Claim (PVC)):

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-rwo-volume
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: longhorn-storage-single-replica
  2. Подключите созданный выше PVC к приложению. Пример манифеста для Deployment:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: app-rwo-1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: app-rwo-1
      template:
        metadata:
          labels:
            app: app-rwo-1
        spec:
          containers:
          - name: app-container
            image: nginx
            volumeMounts:
            - mountPath: "/data"
              name: data-volume
          volumes:
          - name: data-volume
            persistentVolumeClaim:
              claimName: my-rwo-volume

Пример StatefulSet, у которого каждый Pod будет использовать отдельный том. Для этого не требуется создавать отдельные PVC, так как это обеспечивается механизмом VolumeClaimTemplates.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: app-rwo
spec:
  selector:
    matchLabels:
      app: app-rwo
  serviceName: "app-rwo"
  replicas: 3
  template:
    metadata:
      labels:
        app: app-rwo
    spec:
      containers:
      - name: app-container
        image: nginx
        volumeMounts:
        - name: data-volume
          mountPath: "/data"
  volumeClaimTemplates:
  - metadata:
      name: data-volume
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
      storageClassName: longhorn-storage-single-replica

2. Создание тома с доступом RWX и подключение к приложению

Конфигурация Longhorn поддерживает автоматическое создание RWX томов, используя NFS. При создании Persistent Volumes в режиме RWX будет создан Pod с share-manager, в который будет подключен том с Longhorn, а сам он будет выступать в роли NFS-сервера.

Архитектура Longhorn
  1. Создайте том.

    Пример манифеста Kubernetes для создания тома:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-rwx-volume
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: longhorn-storage-single-replica
  2. Подключите том к приложению.

    Том RWX может быть подключен одновременно к нескольким Pod’ам. Пример Deployment, использующего RWX:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: app-rwx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: app-rwx
      template:
        metadata:
          labels:
            app: app-rwx
        spec:
          containers:
          - name: app-container
            image: nginx
            volumeMounts:
            - mountPath: "/shared-data"
              name: data-volume
          volumes:
          - name: data-volume
            persistentVolumeClaim:
              claimName: my-rwx-volume