Для одного узла OpenShift PersistentVolume с hostPath требуются привилегированные модули, как установить по умолчанию?

Я новичок в OpenShift и некоторое время использую CRC (Code Ready Containers), а теперь решил установить OpenShift на одном сервере на голом железе, используя метод Assisted-Installer с https://cloud.redhat.com/blog / deploy-openshift-at-the-edge-with-single-node-openshift и https://console.redhat.com/openshift/assisted-installer/clusters/ . Это хорошо сработало, и у меня есть работающий односервер.

Как отдельный сервер в тестовой среде (без доступной NFS) мне нужно / хочу создать PersistentVolumes с hostPath (локальное хранилище) - они безупречно работают в CRC. Однако при полной установке я столкнулся с проблемой при установке PVC на модули, так как модули не работали с привилегиями. Я отредактировал конфигурацию развертывания и добавил строки ниже (внутри хеша контейнеров)

              - resources: {}
          ...
          securityContext:
            privileged: true

... однако все еще были ошибки, так как у ограниченного SCC есть 'allowPrivilegedContainer: false'. Я сделал ужасный взлом, изменив это значение на true, поэтому добавление строк выше в yaml развертывания работает. Однако должен быть более простой способ, поскольку ни один из этих хаков, похоже, не присутствует в CRC. Я проверил, что поды CRC запускаются ограниченно, для ограниченного SCC установлено значение false, а постоянный том также использует hostPath. Мне также не нужно редактировать yaml развертывания, как указано выше, в CRC - он просто работает (tm).

Руководство здесь показывает, что контейнеры должны работать с привилегиями, однако контейнеры в CRC работают с ограничениями, а SCC по-прежнему имеет 'allowPrivilegedContainer: false'.https://docs.openshift.com/container-platform/4.8/storage/persistent_storage/persistent-storage-hostpath.html

Пример создания приложения, как показано ниже (из курса RedHat DO280), работает без какого-либо обмена привилегиями или конфигурации развертывания в CRC, но на реальном сервере ОС требуется массирование, указанное выше. Поскольку мой сервер предназначен исключительно для тестирования, я хотел бы упростить его, не выполняя описанных выше изменений в процессе взлома и развертывания.

      oc new-app --name mysql --docker-image registry.access.redhat.com/rhscl/mysql-57-rhel7:5.7
oc create secret generic mysql --from-literal password=r3dh4t123
oc set env deployment mysql --prefix MYSQL_ROOT_ --from secret/mysql
oc set volumes deployment/mysql --name mysql-storage --add --type pvc --claim-size 2Gi --claim-mode rwo --mount-path /var/lib/mysql/data
oc get pods -l deployment=mysql
oc get pvc

Любая помощь приветствуется.

PS, я также обнаружил на полном сервере, что мне нужно добавить "--claim-class manual" к PVC и убедиться, что он установлен в PV, опять же, это не требуется в CRC, но вызывает меньшее беспокойство.

1 ответ

Краткий ответ: не используйте hostPath.

Вы используете hostPath, чтобы использовать произвольное дисковое пространство, доступное на томе базового хоста. hostPath также можно использовать для чтения / записи любого пути к каталогу на томе базового хоста, что, как вы понимаете, следует использовать с большой осторожностью.

Взгляните на это как на альтернативу - https://docs.openshift.com/container-platform/4.8/storage/persistent_storage/persistent-storage-local.html

Другие вопросы по тегам