Запланируйте модуль на узле и получите доступ к pv на другом узле

У меня кластер k3s на RPi4 с гетерогенной конфигурацией (у узла большой емкости, но медленный жесткий диск, у другого - SSD-накопитель, у третьего - только SD-карта).

У меня есть постоянные тома и утверждения типа «локальный путь», прикрепленные к узлам и модулям в зависимости от моих потребностей.

Я столкнулся с ситуацией, когда мне нужно запланировать модуль на узле без диска для обработки данных, хранящихся на узле с помощью SSD-диска (перекодировать некоторые видеофайлы в mp4 с помощью ffmpeg, и поскольку это дорогостоящий процесс, я хотелось бы сделать это на простаивающем узле и не замедлять работу узла, на котором работает SSD).

Можно ли прозрачно смонтировать PV с другого узла? Нужно ли мне использовать NFS? Есть ли более развитый тип тома, который можно использовать в RPi4 без ОС, чтобы делать то, что я хочу?

Просмотр документации не очень помог (существует множество различных типов постоянных томов, но описано не так много вариантов использования).

Спасибо

1 ответ

Думаю, вас может заинтересовать Project Longshorn.
Это реализация постоянного хранилища для любого кластера Kubernetes, которая использует существующие диски ваших узлов Kubernetes для обеспечения реплицированного и стабильного хранилища для ваших модулей Kubernetes.

Как описано на GitHub Longhorn:

Longhorn легкий, надежный и мощный. Вы можете установить Longhorn в существующий кластер Kubernetes с помощью одной команды kubectl apply или с помощью диаграмм Helm. После установки Longhorn в кластер Kubernetes добавляется поддержка постоянных томов.

И что самое приятное, вы можете использовать интуитивно понятную панель управления с графическим пользовательским интерфейсом, чтобы настроить Longhorn в соответствии с вашими потребностями.

Примечание. В настоящее время Longhorn поддерживает только amd64.

Монтаж

В приведенном ниже примере я покажу вам, как установить Longshorn .

Прежде всего у вас должно бытьopen-iscsiустановлен на каждом узле кластера. Вам необходимо установить его, например:

      apt-get install open-iscsi

Далее применитеlonghorn.yamlдля установки Лонгхорна :

      kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

Затем создайте (вы можете настроить его позже, используя )

      kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml

Это все, что нам нужно, чтобы начать использовать Longhorn :)

Пользовательский интерфейс Лонгхорна

Как я описывал ранее, мы можем использовать полезную панель управления с графическим интерфейсом, здесь вы можете узнать, как получить к ней доступ.
Кроме того, вам может потребоваться открыть панель мониторинга для внешнего мира, используяIngressкак описано здесь

С использованиемLonghorn UIПанель управления довольно интуитивно понятна, например, на вкладке «Узлы» вы можете легко указать узлы, предназначенные для хранения данных.

Longhorn StorageClass

Вы можете настроитьlonghorn StorageClassпутем редактированияlonghorn-storageclass ConfigMapвlonghorn-systemпространство имен Например, я отредактировалnumberOfReplicasпараметр из3(по умолчанию)1:

      root@kmaster:~# kubectl describe sc longhorn
Name:            longhorn
IsDefaultClass:  No
Annotations:     longhorn.io/last-applied-configmap=kind: StorageClass
apiVersion: storage.k8s.io/v1
...
parameters:
  numberOfReplicas: "1"
  staleReplicaTimeout: "2880"
  fromBackup: ""
...
Другие вопросы по тегам