Стадия жизненного цикла модуля: General Availability

Когда следует использовать LVM, а когда LVM-thin?

Используйте LVM (Thick), если нужна максимальная производительность, сравнимая с производительностью накопителя. LVM (Thick) проще в настройке.

Используйте LVM-thin, если нужно использовать overprovisioning. Производительность LVM-thin ниже, чем у LVM.

Используйте overprovisioning в LVM-thin с осторожностью. Контролируйте наличие свободного места в пуле. В системе мониторинга кластера есть отдельные события при достижении 20%, 10%, 5% и 1% свободного места в пуле.

При отсутствии свободного места в пуле возможна деградация работы модуля и потеря данных.

Почему не удается создать PVC на выбранном узле?

Проверьте, что на выбранном узле работает под csi-node:

d8 k -n d8-sds-local-volume get po -owide

Если под отсутствует, убедитесь, что на узле присутствуют все метки, указанные в поле nodeSelector в настройках модуля. Подробнее см. Почему служебные поды компонентов sds-local-volume не создаются на нужном узле.

Почему под csi-node остался на узле после снятия меток?

Вероятно, на узле есть ресурсы LVMVolumeGroup, которые используются в ресурсах LocalStorageClass.

Удалите зависимые ресурсы вручную, чтобы не потерять контроль над созданными томами. Инструкции по проверке зависимых ресурсов см. в разделе Проверка зависимых ресурсов LVMVolumeGroup на узле.

Почему служебные поды компонентов sds-local-volume не создаются на нужном узле?

Вероятно, проблема связана с метками на узле. Модуль использует узлы, которые имеют метки, указанные в поле nodeSelector в настройках модуля.

  1. Выполните команду для просмотра меток в nodeSelector:

    d8 k get mc sds-local-volume -o=jsonpath={.spec.settings.dataNodes.nodeSelector}
    

    Пример вывода:

    nodeSelector:
      my-custom-label-key: my-custom-label-value
    
  2. Проверьте селекторы, которые использует модуль в секрете d8-sds-local-volume-controller-config:

    d8 k -n d8-sds-local-volume get secret d8-sds-local-volume-controller-config -o jsonpath='{.data.config}' | base64 --decode
    

    Пример вывода:

    nodeSelector:
      kubernetes.io/os: linux
      my-custom-label-key: my-custom-label-value
    

    В выводе должны быть указаны все метки из настроек модуля data.nodeSelector, а также kubernetes.io/os: linux.

  3. Проверьте метки на узле:

    d8 k get node <node-name> --show-labels
    
  4. Добавьте недостающие метки на узел:

    d8 k label node <node-name> my-custom-label-key=my-custom-label-value
    
  5. Если метки присутствуют, проверьте наличие метки storage.deckhouse.io/sds-local-volume-node= на узле. Если метка отсутствует, проверьте состояние контроллера:

    d8 k -n d8-sds-local-volume get po -l app=sds-local-volume-controller
    d8 k -n d8-sds-local-volume logs -l app=sds-local-volume-controller