
Я запускаю кластер k3s на RPi4 с гетерогенной конфигурацией (на одном узле установлен жесткий диск большой емкости, но медленный, на другом — SSD-накопитель, на третьем — только SD-карта).
У меня есть постоянные тома и заявки типа «локальный путь», прикрепленные к узлам и модулям в зависимости от моих потребностей.
Я столкнулся с ситуацией, когда мне нужно запланировать модуль на узле без диска для обработки данных, хранящихся на узле с SSD-диском (перекодировать некоторые видеофайлы в mp4 с помощью ffmpeg, и поскольку это дорогостоящий процесс, я бы хотел сделать это на простаивающем узле и не замедлять работу узла, на котором запущен SSD).
Можно ли прозрачно смонтировать PV с другого узла? Нужно ли мне использовать какой-то nfs? Есть ли более развитый тип тома, который можно использовать в bare-metal RPi4, чтобы сделать то, что я хочу?
Просмотр документации не сильно помог (существует множество различных типов постоянных томов, но описано не так много вариантов использования).
Спасибо
решение1
Я думаю, вам может быть интересноПроект Лонгшорн.
Это реализация постоянного хранилища для любого кластера Kubernetes, которая использует существующие диски ваших узлов Kubernetes для предоставления реплицированного и стабильного хранилища для ваших модулей Kubernetes.
Как описано наLonghorn github:
Longhorn — легкий, надежный и мощный. Вы можете установить Longhorn на существующий кластер Kubernetes с помощью одной команды kubectl apply или с помощью Helm charts. После установки Longhorn добавляет постоянную поддержку томов в кластер Kubernetes.
И самое лучшее, вы можете использовать интуитивно понятный графический интерфейс для настройкиДлиннорогийв соответствии с вашими потребностями.
Примечание:В настоящее время Longhorn поддерживает толькоamd64.
Монтаж
В примере ниже я покажу вам, как установитьЛонгхорн.
Прежде всего, вы должны open-iscsi
установить на каждом узле кластера. Вам нужно установить его, используя, например:
apt-get install open-iscsi
Далее примените longhorn.yaml
для установкиДлиннорогий:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
Затем создайте longhorn
StorageClass
(вы сможете настроить его позже с помощью ConfigMap
)
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: ""
...