Запланируйте модуль на узле и получите доступ к 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: ""
...