当前位置: 首页 > 知识库问答 >
问题:

主机路径为的OpenShift单节点持久性卷需要特权pod,如何设置为默认值?

程墨竹
2023-03-14

我对OpenShift相当陌生,并且已经使用CRC(代码就绪容器)有一段时间了,现在决定使用https://cloud.redhat.com/blog/deploy-openshift-at-the-edge-with-single-node-openshift和https://console.redhat.com/openshift/assisted-installer/clusters/.的辅助安装器方法在裸机上安装单服务器OpenShift。

作为测试环境中的一台服务器(没有可用的NFS),我需要/想要创建带有hostPath(localhost存储)的PersistentVolumes,这些卷在CRC中运行得很完美。然而,在完全安装时,我在将PVC安装到pod时遇到了一个问题,因为pod没有运行特权。我编辑了部署配置并添加了以下行(在容器散列中)

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

…然而仍然有错误,因为受限的SCC有“允许特权容器:假”。我做了一个可怕的黑客攻击,将其更改为真,因此将上面的行添加到部署yaml中。然而,必须有一个更简单的方法,因为CRC中似乎没有这些黑客。我检查了CRC pod运行受限,受限的SCC将特权设置为假,持久性卷也使用主机路径。我也不必像上面那样在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 中处理任何权限或部署配置即可工作,但在实际操作系统服务器上需要上述操作。由于我的服务器纯粹用于测试,因此我想在不进行上述黑客作业和部署更改的情况下使其更容易。

oc new-app --name mysql --html" target="_blank">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 服务器并向 /etc/exports 添加条目来克服这个问题。但是,我仍然有兴趣了解CRC在使用hostPath时如何管理上述问题

共有1个答案

戚俊健
2023-03-14

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

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

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

 类似资料:
  • 通常所有的默认配置都可以。但是现在我需要将我的应用程序部署到Weblogic 12.2服务器,我面临一些关于持久性的问题。 我只是想知道如何设置持久化单元的JPA EntityManagerFactory不默认。因为通过启动应用程序,我可以看到这些日志: 所以我不确定weblogic是使用默认的持久化单元(eclipselink)还是真正的Hibernate。所以我想在我的应用程序中的任何地方明确

  • 我可以为我的vaadin fileupload组件设置默认上载路径吗?我想设置一些上载路径到我的vaadin组件。如果有人不选择上传任何文件,我的特定文件将被上传。有可能吗? 例如:I would like to do as

  • 问题内容: 我相信有一种简单的方法可以将文件复制到已经安装到容器的Docker卷中。 如如何将多个文件复制到Docker数据卷中所述 但是,如何使用已包含文件的命名卷来创建该卷?我已经读过,将cp文件放入并不是一个好主意。 我是Docker的新手,并且所有这些都是nuancies,因此,如果我对卷的基本理解不正确,请道歉。 问题答案: 方法1-复制 要将文件从主机复制到容器 上面方法的问题是,它不

  • 我有一个目录如下所示: 我希望我的文件需要。现在我正在使用,但这不起作用。我做错了什么?我希望避免使用。

  • 我使用使用SSL的安全通道通过JMS与Weblogic IBM Webpsphere MQ建立了连接。我在Weblogic上的应用程序收到了来自MQ的消息。正在将应答发送到应答队列。响应头存在MQMD,它填充java。在参数持久化JMS发送值“1”中。其他系统需要在持久化时接收值“0”。如何将此参数设置为java?我猜这个参数是javax。jms。deliverymode。但我不知道怎么设置。 无

  • 问题内容: 因此,我创建了一个新的gradle项目,选择Java作为“其他库和框架”。 Gradle将编译并维护程序包结构, 但是项目结构->模块中的“模块编译输出路径”设置为。 这确实很烦人,并不是我每次创建新的Java项目时都要更改的东西。 我可以以某种方式更改默认设置,使其与gradle输出路径匹配吗? 问题答案: 您可以将Gradle pluigin用于INtelliJ 在: 然后,当您运