Пользовательские сценарии
Для того, чтобы иметь возможность подключать Persistent Volumes из хранилища Longhorn, необходимо добавить узлы, на которых будут запускаться пользовательские Pod-ы, в список clientNodes в LonghornClusterConfig или сделать их частью storagePool.
|
На узлах, перечисленных в списке |
После успешного применения конфигурации нужно создать Persistent Volumes на хранилище Longhorn.
1. Создание тома с доступом RWO и его подключение к приложению
-
Создайте том.
Пример манифеста 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 -
Подключите созданный выше 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-сервера.
-
Создайте том.
Пример манифеста Kubernetes для создания тома:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-rwx-volume spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: longhorn-storage-single-replica -
Подключите том к приложению.
Том 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