Как разместить базу данных SQLite за пределами постоянного тома NFS

У меня есть многоузловой (2) кластер Kubernetes, работающий на «голом железе». Я понимаю, что 1. hostPath не подходит для производства и 2. постоянные тома hostPath не поддерживаются для установок с несколькими узлами. Есть ли способ безопасно запускать приложения, поддерживаемые базой данных SQLite? По NFS база данных сильно блокируется и сильно снижает производительность приложений.

Я бы, вероятно, разместил базы данных SQLite для каждого приложения на томе hostPath, и все снова заработало бы гладко. Но мне было интересно, есть ли обходные пути для достижения этого, даже если мне нужно ограничить приложения определенным узлом.


person James Teague II    schedule 02.05.2019    source источник
comment
Похоже, что DBM в стиле клиент-сервер, например postgres, может быть более подходящим для ваших нужд.   -  person Shawn    schedule 02.05.2019
comment
Я полностью согласен с тобой. Это, вероятно, правильный способ сделать это. Единственная проблема заключается в том, что приложения на изображении не поддерживают переключение типа серверной базы данных. Я могу в конечном итоге оказаться здесь, но на данный момент я и собираюсь попытаться получить локальный постоянный том на определенном узле.   -  person James Teague II    schedule 03.05.2019


Ответы (1)


Кажется, вам следует использовать Local Persistent Volumes GA.

Согласно документации:

Локальный том представляет собой смонтированное локальное запоминающее устройство, такое как диск, раздел или каталог.

По сравнению с томами hostPath, локальные тома можно использовать надежным и переносимым образом без ручного планирования подов для узлов, поскольку система знает об ограничениях узла тома, просматривая привязку узла к PersistentVolume.

Однако:

В GA локальные постоянные тома не поддерживают динамическую подготовку томов.

Дополнительную информацию вы можете найти здесь и здесь.

Как один пример:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 100Gi
  # volumeMode field requires BlockVolume Alpha feature gate to be enabled.
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/disks/ssd1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - example-node

С локальными постоянными томами планировщик Kubernetes гарантирует, что модуль, использующий локальный постоянный том, всегда запланирован на один и тот же узел.

person Mark    schedule 10.05.2019
comment
Что означает ГА? То, как вы это цитируете, звучит как название компании. - person bluenote10; 06.04.2020
comment
Как указано в приведенных выше ссылках общедоступный, стабильный - person Mark; 08.04.2020
comment
Спасибо! Однако обратите внимание, что обе предоставленные ссылки не содержат общедоступных слов, везде только GA, поэтому я и спросил. - person bluenote10; 08.04.2020