1

我对 OpenShift 很陌生,并且已经使用 CRC(代码就绪容器)有一段时间了,现在决定使用https://cloud.redhat.com/中的 Assisted-Installer 方法在裸机上安装单个服务器 OpenShift博客/deploy-openshift-at-the-edge-with-single-node-openshifthttps://console.redhat.com/openshift/assisted-installer/clusters/。这运作良好,我有一个功能单一的服务器。

作为测试环境中的单个服务器(没有可用的 NFS),我需要/想要使用 hostPath(本地主机存储)创建 PersistentVolumes - 这些在 CRC 中完美地工作。但是在完全安装时,我在将 PVC 安装到 pod 时遇到了一个问题,因为 pod 没有以特权运行。我编辑了部署配置并添加了下面的行(在容器哈希中)

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

...但是仍然有错误,因为受限制的 SCC 具有“allowPrivilegedContainer:false”。我做了一个可怕的修改,将其更改为 true,因此将上面的行添加到部署 yaml 工作。然而,必须有一种更简单的方法,因为 CRC 中似乎不存在这些黑客。我检查并发现 CRC pod 运行受限,受限 SCC 已将权限设置为 false,并且 Persistent Volume 也在使用 hostPath。我也不必像上面那样在 CRC 中编辑部署 yaml - 它可以正常工作(tm)。

这里的指导表明容器必须以特权运行,但是 CRC 中的容器运行受限,并且 SCC 仍然具有“allowPrivilegedContainer:false”。 https://docs.openshift.com/container-platform/4.8/storage/persistent_storage/persistent-storage-hostpath.html

下面的示例应用程序创建(来自 RedHat DO280 课程)无需任何权限按摩或 CRC 中的部署配置即可工作,但在真正的 OS 服务器上需要上述按摩。由于我的服务器纯粹是为了测试,所以我想让它更容易,而不需要做上面的 hackjob 和部署更改。

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

任何帮助表示赞赏。

编辑:我现在通过启用 nfs-server 并将条目添加到 /etc/exports 来克服这个问题。但是我仍然有兴趣了解 CRC 在使用 hostPath 时如何管理上述问题

4

1 回答 1

1

对此的简短回答是:不要使用 hostPath。

您正在使用 hostPath 来利用底层主机卷上可用的任意磁盘空间。hostPath 也可用于读取/写入底层主机卷上的任何目录路径——正如您可以想象的那样,应该非常小心地使用它。

看看这个作为替代方案 - https://docs.openshift.com/container-platform/4.8/storage/persistent_storage/persistent-storage-local.html

于 2021-10-04T07:55:45.860 回答