Расширение хранилища Nexus¶
Nexus в LCM развёрнут как StatefulSet, а том с данными создаётся из шаблона spec.volumeClaimTemplates. Это поле у существующего StatefulSet неизменяемо, поэтому одного изменения параметра nexus_pv_size в lcm-config.yaml недостаточно — он применяется только при первоначальной установке (см. Предварительные требования). Чтобы увеличить том уже развёрнутого Nexus, вручную расширьте существующий PVC, а затем синхронизируйте с ним шаблон Helm-релиза.
Для расширения PVC Nexus выполните следующие действия:
Откройте файл конфигурации инсталлятора
lcm-config.yaml:$ cd lcm-k0s/ $ vi lcm-config.yaml
Увеличьте в нём размер тома Nexus, например:
nexus_pv_size: "160Gi"
Расширьте существующий PVC вручную:
$ kubectl -n lcm-nexus patch pvc data-nexus3-0 \ -p '{"spec":{"resources":{"requests":{"storage":"160Gi"}}}}'
Проверьте, что PVC расширился:
$ kubectl -n lcm-nexus get pvc data-nexus3-0
Ожидаемый вывод:
Проверьте размер внутри пода:
$ kubectl -n lcm-nexus exec nexus3-0 -c nexus3 -- df -h /nexus-data
Примечание
Эта проверка показательна только при хранении на Ceph (multi-node). При хранении на NFS (single-node) команда выводит размер всего экспортируемого NFS-каталога, а не тома конкретного пода, поэтому не отражает фактический размер PVC.
Если под перешёл в
CrashLoopBackOffили не стартовал после расширения PVC, удалите его — Kubernetes создаст его заново с уже расширенным томом. На Ceph (multi-node) под также нужно удалить, если внутри него не отображается новый размер. Удаление выполняется следующей командой:$ kubectl -n lcm-nexus delete pod nexus3-0
На NFS (single-node) размер не отражает фактический PVC в принципе (см. примечание выше), поэтому при отсутствии ошибок удалять под не нужно.
Для синхронизации Helm-релиза с фактическим размером тома удалите StatefulSet с флагом
--cascade=orphan:$ kubectl -n lcm-nexus delete sts nexus3 --cascade=orphan
А затем примените конфигурацию:
$ cd lcm-k0s/ $ task k8s-install-apps-multi-node
$ cd lcm-k0s/ $ task k8s-install-apps-single-node
Флаг
--cascade=orphanудаляет только контроллер StatefulSet, оставляя подnexus3-0и PVCdata-nexus3-0нетронутыми. Это нужно, чтобы Helm пересоздал StatefulSet с новымvolumeClaimTemplates, не удаляя данные Nexus.Проверьте, что шаблон Helm-релиза тоже содержит новый размер:
$ helm -n lcm-nexus get manifest nexus3 \ | sed -n '/volumeClaimTemplates:/,/persistentVolumeClaimRetentionPolicy:/p'
Ожидаемый результат: