Вопрос или проблема
У меня есть некоторые проблемы с моим кластером Talos Linux. В данный момент я запускаю 2 машины (1 контрольная и 1 рабочая) на Virtualbox, обе машины имеют 4 ГБ оперативной памяти и 4 единицы CPU. У меня также есть сервер TrueNas для предоставления NFS-ресурсов, nfsv4 включен на TrueNas, и ресурс доступен на других компьютерах с Linux (проверено на Ubuntu 20.04 и Kali Linux), и, конечно, у всех машин есть подключение к сети. Я установил драйвер NFS-CSI, как предлагает документация Kubernetes. Я пытаюсь развернуть Helm-чарт Moodle от Bitnami, и он работает, когда я не включаю постоянство, но когда я его включаю, я получаю следующую ошибку:
MountVolume.SetUp не удалось для тома “kube-nfs-pv2”: ошибка монтирования: статус выхода 32 Команда монтирования: mount Аргументы монтирования: -t nfs 172.20.4.114:/mnt/Pool1/Kubernetes-Storage /var/lib/kubelet/pods/2e9dd58c-923e-4788-8caa-2203a7c972ec/volumes/kubernetes.io~nfs/kube-nfs-pv2 Вывод: mount.nfs: монтирование 172.20.4.114:/mnt/Pool1/Kubernetes-Storage не удалось, причина, указанная сервером: Нет такого файла или директории
Вот мой файл класса хранения:
kind: StorageClass
metadata:
name: hdd-nfs
provisioner: nfs.csi.k8s.io
parameters:
server: 172.20.4.114
path: /mnt/Pool1/Kubernetes-Storage
readOnly: "false"
mountOptions:
- hard
- nfsvers=4
А вот мой файл постоянного тома:
kind: PersistentVolume
metadata:
name: kube-nfs-pv1
spec:
storageClassName: hdd-nfs
capacity:
storage: 30Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
nfs:
server: 172.20.4.114
path: "/mnt/Pool1/Kubernetes-Storage"
Я не знаю, что мне делать, чтобы решить эту проблему, любая помощь будет очень полезна.
Ответ или решение
Для решения проблемы с использованием NFS в вашем кластере Kubernetes на Talos Linux, давайте разберём основные моменты, которые могут быть причиной ошибки, а также предложим шаги по устранению неполадок.
Проблема
Вы указали, что при использовании персистентного хранилища для Helm-чарта Moodle на основе nfs.csi.k8s.io
получаете ошибку:
mount.nfs: mounting 172.20.4.114:/mnt/Pool1/Kubernetes-Storage failed, reason given by server: No such file or directory
Эта ошибка обычно указывает на то, что заданный путь к NFS-ресурсу не существует или недоступен для монтирования.
Шаги по устранению неполадок
-
Проверьте доступность NFS-ресурса:
Убедитесь, что NFS-ресурс доступен не только с вашего TrueNAS, но и с вашего кластера Talos. Попробуйте выполнить следующую команду на одном из узлов вашего кластера:
showmount -e 172.20.4.114
Это должно отобразить доступные экспортированные системы файлов. Убедитесь, что ваш путь
/mnt/Pool1/Kubernetes-Storage
указан среди экспортируемых. -
Проверьте экспортируемый путь:
Убедитесь, что папка
/mnt/Pool1/Kubernetes-Storage
действительно существует на сервере TrueNAS и имеет права доступа для вашего NFS-клиента. Проверить это можно, выполнив команду:ls -ld /mnt/Pool1/Kubernetes-Storage
Убедитесь, что права доступа к директории достаточно для монтирования (рекомендуется, чтобы права были 755 или 777).
-
Параметры NFS:
Проверьте настройки вашего NFS-сервера для настройки экспорта. Конфигурация должна позволять клиентам из вашей сети монтировать ресурсы. Например, в файле
/etc/exports
на сервере TrueNAS убедитесь, что добавлена соответствующая строка:/mnt/Pool1/Kubernetes-Storage *(rw,sync,no_subtree_check)
Затем выполните команду
exportfs -ra
для применения изменений. -
Проверьте конфигурацию
StorageClass
иPersistentVolume
:Убедитесь, что в конфигурации
StorageClass
иPersistentVolume
указаны правильные параметры. Путь должен быть указан без дополнительных пробелов или ошибочных символов.Для вашего
PersistentVolume
правильной конфигурацией будет:kind: PersistentVolume metadata: name: kube-nfs-pv1 spec: storageClassName: hdd-nfs capacity: storage: 30Gi volumeMode: Filesystem accessModes: - ReadWriteOnce nfs: server: 172.20.4.114 path: /mnt/Pool1/Kubernetes-Storage
-
Логи сообщений:
Если ошибка сохраняется, просмотрите логи kubelet на узлах вашего кластера Talos для получения дополнительной информации. Логи можно проверить следующей командой:
journalctl -u kubelet
Обратите внимание на сообщения, связанные с NFS-накладными расходами.
Заключение
Если, после всех этих проверок, проблема всё еще сохраняется, возможно, стоит рассмотреть вариант использования другого метода для реализации персистентного хранилища, например, использовать другой провайдер хранилища или проверить настройки сети между вашим кластером и NFS-сервером.
Если у вас останутся вопросы или понадобятся дополнительные пояснения, не стесняйтесь задавать их.