Не удаётся создать арендатора Minio из-за сетевой ошибки.

Вопрос или проблема

Я развернул minio через kubernetes, но возникла ошибка с minio, когда я создаю tenant.

Я проверил логи, и они выглядят так

INFO: Unable to use the drive http://storage-pool-0-0.storage-hl.minio.svc.cluster.local:9000/export: drive not found, will be retried
INFO: Unable to use the drive http://storage-pool-0-1.storage-hl.minio.svc.cluster.local:9000/export: drive not found, will be retried
INFO: Unable to use the drive http://storage-pool-0-2.storage-hl.minio.svc.cluster.local:9000/export: drive not found, will be retried
INFO: Unable to use the drive http://storage-pool-0-3.storage-hl.minio.svc.cluster.local:9000/export: drive not found, will be retried
INFO: Waiting for a minimum of 2 drives to come online (elapsed 23m13s)

Все логи такие, и я попробовал выполнить kubectl exec -it storage-pool-0-3 -n minio -- curl -I http://storage-pool-0-0.storage-hl.minio.svc.cluster.local:9000.

Я получил следующее

Defaulted container "minio" out of: minio, sidecar, validate-arguments (init)
HTTP/1.1 400 Bad Request
Accept-Ranges: bytes
Content-Length: 225
Content-Type: application/xml
Server: MinIO
Vary: Origin
Date: Sun, 21 Jul 2024 23:13:57 GMT

Что мне сделать, чтобы решить эту проблему и использовать minio нормально?

Статус моего kubernetes

root@dev-master-1:~/minio/mc# kubectl get all -n minio
NAME                   READY   STATUS    RESTARTS   AGE
pod/storage-pool-0-0   2/2     Running   0          32m
pod/storage-pool-0-1   2/2     Running   0          32m
pod/storage-pool-0-2   2/2     Running   0          32m
pod/storage-pool-0-3   2/2     Running   0          32m

NAME                      TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
service/minio             LoadBalancer   10.101.4.180    192.168.3.240   80:32676/TCP     32m
service/storage-console   LoadBalancer   10.103.42.214   192.168.3.241   9090:31544/TCP   32m
service/storage-hl        ClusterIP      None            <none>          9000/TCP         32m

NAME                              READY   AGE
statefulset.apps/storage-pool-0   4/4     32m

И мой cni – cilium, LoadBalance – Metallb

Я столкнулся с той же проблемой

MiniO не мог создавать файлы, и при подробном изучении оказалось, что закончилось количество inode

Решение: увеличить диски для добавления inode

kex minio-1 -- bash
bash-5.1$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          63G   47G   14G  78% /
tmpfs            64M     0   64M   0% /dev
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/vdb        4.9G  2.1G  2.8G  44% /export          <===============
/dev/vda2        63G   47G   14G  78% /data
shm              64M     0   64M   0% /dev/shm
tmpfs            13G   12K   13G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
bash-5.1$ df -i
Filesystem      Inodes   IUsed   IFree IUse% Mounted on
overlay        4194304 1150483 3043821   28% /
tmpfs          2047670      17 2047653    1% /dev
tmpfs          2047670      17 2047653    1% /sys/fs/cgroup
/dev/vdb        327680  327680       0  100% /export <===============
/dev/vda2      4194304 1150483 3043821   28% /data
shm            2047670       1 2047669    1% /dev/shm
tmpfs          2047670       9 2047661    1% /run/secrets/kubernetes.io/serviceaccount
tmpfs          2047670       1 2047669    1% /proc/acpi
tmpfs          2047670       1 2047669    1% /proc/scsi
tmpfs          2047670       1 2047669    1% /sys/firmware

Ответ или решение

Вопрос "Невозможно создать тенант MinIO с ошибкой сети" является распространенной проблемой, с которой сталкиваются при развертывании MinIO в среде Kubernetes. Рассмотрим теоретические предпосылки проблемы, примеры из вашего описания и предложим возможные решения в контексте этой ситуации.

Теория

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

  1. CNI (Container Network Interface): В вашем случае используется Cilium, который обеспечивает сетевое взаимодействие между подами. Возможные сбои на этом уровне могут мешать поду MinIO видеть другие поды.

  2. Балансировщик нагрузки: Вы используете MetalLB, который обеспечивает распределение нагрузки и доступ к сервисам. Неправильная настройка может также вызвать проблемы с доступностью.

  3. Настройки StatefulSet: MinIO часто развертывается с использованием StatefulSet, чтобы обеспечить стойкость данных. Ошибки в конфигурации Persistent Volume или Persistent Volume Claims могут привести к проблемам с доступностью дисков.

  4. Проблемы с дисковым пространством: Как вы упоминаете, проблема с inodes может предотвратить создание файлов, даже если физическое дисковое пространство ещё доступно.

Пример

Ваши логи показывают, что все четыре диска не распознаны (сообщения "drive not found"). Эти сообщения могут указывать на то, что адресации не удается достичь целей, которые MinIO подразумевает в сети.

Когда вы проверили соединение с помощью команды kubectl exec, вы получили ответ 400 Bad Request. Это указывает, что хотя соединение установлено, сервер MinIO на другой стороне отклоняет запрос. Это может быть связано с неправильной конфигурацией шоу MinIO или неправильной маршрутизацией запросов.

Также в вашем описании упоминается исчерпание inodes на определенном разделе диска (/export), что указывает на ещё один возможный источник проблемы. MinIO требует наличие свободных inodes для работы с файлами, и если их не хватает, это может мешать функционированию системы.

Реализация

Следующие шаги помогут вам диагностировать и исправить проблему:

  1. Проверка CNI: Убедитесь, что Cilium работает исправно и поды могут пинговаться друг друга. Используйте kubectl describe pod <pod-name> -n minio для проверки состояния сети.

  2. Проверка конфигурации DNS и имен сервисов: Проверьте, что адреса, такие как http://storage-pool-0-0.storage-hl.minio.svc.cluster.local:9000, корректно разрешаются.

  3. Проверка MetalLB: Убедитесь, что IP-адреса, распределяемые MetalLB, активны и правильно настроены.

  4. Увеличение inodes: Для справления с проблемой inodes необходимо увеличить размер раздела или добавить дополнительные диски с большим количеством inodes. Это может включать в себя создание новых Persistent Volume и связь их с StatefulSet.

  5. Проверка логов MinIO: Изучите логи MinIO и компонента cilium для получения информации о тревогах или ошибках, которые могли бы указать на источник проблемы.

  6. Консультация с документацией: Детальная проверка официальной документации MinIO и Cilium может помочь выявить настройки, о которых вы могли не знать.

  7. Проверка StatefulSet: Перепроверьте конфигурацию ваших StatefulSets и связанных Persistent Volume Claims, чтобы убедиться в правильности их настройки.

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

Оцените материал
Добавить комментарий

Капча загружается...