Параметры Storage Class
1. Обзор
Объект Storage Class имеет ряд настраиваемых параметров. Пример YAML-манифеста приведен ниже:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: longhorn-test
provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
parameters:
backupTargetName: "default"
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
fromBackup: ""
fsType: "ext4"
# mkfsParams: ""
# migratable: false
# encrypted: false
# dataLocality: "disabled"
# replicaAutoBalance: "ignored"
# diskSelector: "ssd,fast"
# nodeSelector: "storage,fast"
# recurringJobSelector: '[{"name":"snap-group", "isGroup":true},
# {"name":"backup", "isGroup":false}]'
# backingImageName: ""
# backingImageChecksum: ""
# backingImageDataSourceType: ""
# backingImageDataSourceParameters: ""
# unmapMarkSnapChainRemoved: "ignored"
# disableRevisionCounter: false
# replicaSoftAntiAffinity: "ignored"
# replicaZoneSoftAntiAffinity: "ignored"
# replicaDiskSoftAntiAffinity: "ignored"
# nfsOptions: "soft,timeo=150,retrans=3"
# dataEngine: "v1"
# freezeFSForSnapshot: "ignored"
2. Встроенные поля
Некоторые поля являются общими для всех Storage Class в Kubernetes. Подробнее см. в статье Kubernetes Storage Class.
- Provisioner (поле:
provisioner) -
Определяет подключаемый plugin, который будет использоваться для динамического создания постоянных томов (Persistent Volumes). Для Longhorn этим плагином всегда является
driver.longhorn.io. Подробнее см. в статье Kubernetes Storage Class: Provisioner. - Allow Volume Expansion (поле:
allowVolumeExpansion) -
По умолчанию:
true.Определяет, можно ли увеличивать размер тома путем редактирования соответствующего объекта PersistentVolumeClaim (PVC). Подробнее см. в статье Kubernetes Storage Class: Allow Volume Expansion.
- Reclaim Policy (поле:
reclaimPolicy) -
По умолчанию:
DeleteОпределяет, что делать с томом после удаления PVC: удалить (Delete) или сохранить (Retain). Подробнее см. в статье Kubernetes Storage Class: Reclaim Policy.
- Mount Options (поле:
mountOptions) -
По умолчанию список пуст (
[]).Список дополнительных параметров монтирования, которые будут переданы драйверу при монтировании тома. Параметры, указанные в этом поле, применяются ко всем PersistentVolumes, созданным динамически с помощью этого StorageClass.Подробнее см. в статье Kubernetes Storage Class: Mount Options.
- Volume Binding Mode (поле:
volumeBindingMode) -
По умолчанию
Immediate.Определяет момент, когда том будет создан и привязан к узлу.
-
Immediate: сразу при создании PVC.
-
WaitForFirstConsumer: откладывает создание тома до запуска Pod’а
Подробнее см. в статье Kubernetes Storage Class: Volume Binding Mode.
-
3. Специфичные для Longhorn параметры
Некоторые из этих параметров также существуют и могут быть заданы в глобальных настройках. Когда том создается в Kubernetes с использованием определенного StorageClass, параметры StorageClass имеют приоритет над глобальными настройками. Если StorageClass изменен, ни Longhorn, ни Kubernetes не отвечают за распространение изменений его параметров на тома, созданные ранее с его помощью.
Эти поля применяются только при создании новых томов. Если StorageClass изменен, ни Longhorn, ни Kubernetes не обязаны распространять изменения на ранее созданные тома.
- Number Of Replicas (поле:
parameters.numberOfReplicas) -
По умолчанию: 1
Желаемое количество копий (реплик) для обеспечения отказоустойчивости:
-
Значение должно быть от 1 до 20.
-
Реплики будут размещены максимально равномерно по зонам, узлам и дискам кластера, с учетом ограничений (например, NodeSelector).
Глобальная настройка: Default Replica Count.
-
- Stale Replica Timeout (поле:
parameters.staleReplicaTimeout) -
По умолчанию: 30
Количество минут после того, как реплика признана неработоспособной и по истечении которых она считается непригодной для восстановления и удаляется.
- From Backup (поле:
parameters.fromBackup) -
По умолчанию: "". Пример:
s3://backupbucket@us-east-1?volume=minio-vol01&backup=backup-eeb2782d5b2f42bbURL-адрес резервной копии, из которой будет восстановлен том.
- FS Type (поле:
parameters.fsType) -
По умолчанию:
ext4.Тип файловой системы, которая будет создана на томе при его инициализации.
Подробнее см. в статье Creating Longhorn Volumes with Kubernetes.
- Mkfs Params (поле:
parameters.mkfsParams) -
По умолчанию: "".
Дополнительные параметры команд mkfs, передаваемые при создании файловой системы на томе. Подробнее см. в статье Creating Longhorn Volumes with Kubernetes.
- Migratable (поле:
parameters.migratable) -
По умолчанию:
false.Включает поддержку живой миграции (live migration) тома между узлами. Основной вариант использования - работа с томами в Harvester.
- Encrypted (поле:
parameters.encrypted) -
По умолчанию:
false.Включает шифрование тома.
Подробнее см. в статье Encrypted Volumes.
- Data Locality (поле:
parameters.dataLocality) -
По умолчанию:
disabled.Если включено, данные стараются храниться на том же узле, что и рабочая нагрузка, для повышения производительности.
-
best-effort— реплика будет размещена локально, если возможно, но может быть перемещена. -
strict-local— количество реплик должно быть равно 1, иначе создание тома завершится ошибкой валидации параметров. -
Если режим
strict-localневозможен по какой-либо причине, создание тома завершится ошибкой. Реплика в режимеstrict-local, которая была отделена от своей рабочей нагрузки, будет переведена в состояниеstopped.
Глобальная настройка: Default Data Locality. Подробнее см. в статье Data Locality.
-
- Replica Auto-Balance (поле:
parameters.replicaAutoBalance) -
По умолчанию:
ignored.Если включено, перемещает реплики на менее загруженные узлы.
-
ignoredозначает использование глобальной настройки. -
Другие варианты:
disabled,least-effort,best-effort.
Глобальная настройка: Replica Auto Balance. Подробнее в Auto Balance Replicas.
-
- Disk Selector (поле:
parameters.diskSelector) -
По умолчанию: "". Пример:
"ssd, fast"Список тегов для выбора дисков, которые являются кандидатами для размещения реплик.
Подробнее см. в статье Storage Tags.
- Node Selector (поле:
parameters.nodeSelector) -
По умолчанию: "". Пример:
"storage,fast"Список тегов для выбора узлов, которые являются кандидатами для размещения реплик.
Подробнее в Storage Tags.
- Recurring Job Selector (поле:
parameters.recurringJobSelector) -
По умолчанию: "". Пример:
[{"name":"backup", "isGroup":true}]Список периодических задач, которые будут выполняться на томе.
Подробнее см. в статье Recurring Snapshots and Backups.
- Backing Image Name (поле:
parameters.backingImageName) -
По умолчанию: "".
Имя базового образа диска, используемого как общий read-only слой для всех томов, созданных через этот StorageClass.
Подробнее см. в статье Backing Image.
- Backing Image Checksum (поле:
parameters.backingImageChecksum) -
По умолчанию: ""
Контрольная сумма базового образа диска для проверки целостности перед использованием.
Подробнее см. в статье Backing Image.
- Backing Image Data Source Type (поле:
parameters.backingImageDataSourceType) -
По умолчанию: "".
Тип источника данных для загрузки базового образа диска (например, HTTP, образ из другого тома и т.п.).
Подробнее см. в статье Backing Image.
- Backing Image Data Source Parameters (поле:
parameters.backingImageDataSourceParameters) -
По умолчанию: "".
Параметры для первоначальной загрузки базового образа из внешнего источника (URL, S3, timeout и др.). Используются только при первом создании образа. После загрузки образ становится общим неизменяемым слоем для всех томов StorageClass.
Подробнее см. в статье Backing Image.
- Unmap Mark Snap Chain Removed (поле:
parameters.unmapMarkSnapChainRemoved) -
По умолчанию:
ignored.Управляет политикой очистки цепочек снапшотов при выполнении TRIM внутри файловой системы, чтобы освобождать неиспользуемое пространство.
-
ignoredозначает использование глобальной настройки. Другие значения:enabledиdisabled.
Глобальная настройка: Remove Snapshots During Filesystem Trim.
Подробнее см. в статье Trim Filesystem.
-
- Disable Revision Counter (поле:
parameters.disableRevisionCounter) -
По умолчанию:
true.Отключает ревизионный счетчик, используемый Longhorn для отслеживания записей на репликах. Может повышать производительность, но снижает точность диагностики расхождений
Глобальная настройка: Disable Revision Counter.
Подробнее см. в статье Revision Counter.
- Replica Soft Anti-Affinity (поле:
parameters.replicaSoftAntiAffinity) -
По умолчанию:
ignored.Определяет, можно ли размещать несколько реплик одного тома на одной ноде.
-
ignoredозначает использование глобальной настройки. -
Другие значения:
enabledиdisabled.
Глобальная настройка: Replica Node Level Soft Anti-Affinity.
Подробнее см. в статье Scheduling и Best Practices.
-
- Replica Zone Soft Anti-Affinity (поле:
parameters.replicaZoneSoftAntiAffinity) -
По умолчанию:
ignored.Определяет, можно ли размещать несколько реплик одного тома в одной зоне.
-
ignoredозначает использование глобальной настройки. -
Другие значения:
enabledиdisabled.
Глобальная настройка: Replica Zone Level Soft Anti-Affinity.
Подробнее см. в статье Scheduling.
-
- Replica Disk Soft Anti-Affinity (поле:
parameters.replicaDiskSoftAntiAffinity) -
По умолчанию:
ignored.Определяет, можно ли размещать несколько реплик одного тома на одном физическом диске.
-
ignoredозначает использование глобальной настройки. -
Другие значения:
enabledиdisabled.
Глобальная настройка: Replica Disk Level Soft Anti-Affinity.
Подробнее см. в статье Scheduling.
-
- NFS Options (поле:
parameters.nfsOptions) -
По умолчанию: "". Пример:
hard, syncДополнительные параметры монтирования NFS для RWX-томов, управляемых Share Manager. Следует использовать только при необходимости - встроенные параметры отличаются между версиями Longhorn.
Подробнее в RWX Workloads.
- Data Engine (поле:
parameters.dataEngine) -
По умолчанию:
v1.Определяет поколение движка данных Longhorn, которое будет использоваться томом.
-
v1 - классический (основной) движок данных Longhorn.
-
v2 - новый механизм хранения, представленный как экспериментальная функция начиная с версии Longhorn 1.6.0.
Глобальная настройка: V2 Data Engine.
Подробнее см. в статье V2 Data Engine Quick Start.
-
- Freeze Filesystem For Snapshot (поле:
parameters.freezeFilesystemForSnapshot) -
По умолчанию:
ignored.Управляет заморозкой (freeze) файловой системы перед созданием снимка тома для гарантии консистентности данных.
-
ignoredуказывает Longhorn использовать глобальную настройку. -
Другие значения:
enabledиdisabled.
Глобальная настройка: Freeze File System For Snapshot.
-