4.9. 配置存储


警告

OpenShift Dev Spaces 不支持网络文件系统(NFS)协议。

4.9.1. 配置存储类

要将 OpenShift Dev Spaces 配置为使用配置的基础架构存储,请使用存储类安装 OpenShift Dev Spaces。当您要绑定由非默认置备程序提供的持久性卷时,这特别有用。

OpenShift Dev Spaces 有一个组件,需要持久性卷来存储数据:

  • OpenShift Dev Spaces 工作区。OpenShift Dev Spaces 工作区使用卷存储源代码,如 /projects 卷。
注意

只有工作区不是临时的时,OpenShift Dev Spaces 工作区源代码才会存储在持久性卷中。

持久性卷声明事实:

  • OpenShift Dev Spaces 不会在基础架构中创建持久性卷。
  • OpenShift Dev Spaces 使用持久性卷声明(PVC)来挂载持久性卷。
  • 第 2.3.1.2 节 “dev Workspace operator” 创建持久性卷声明。

    在 OpenShift Dev Spaces 配置中定义存储类名称,以使用 OpenShift Dev Spaces PVC 中的存储类功能。

流程

使用 CheCluster 自定义资源定义来定义存储类:

  1. 定义存储类名称 :配置 CheCluster 自定义资源,并安装 OpenShift Dev Spaces。请参阅 第 4.1.1 节 “在安装过程中使用 dsc 配置 CheCluster 自定义资源”

    spec:
      devEnvironments:
        storage:
          perUserStrategyPvcConfig:
            claimSize: <claim_size> 
    1
    
            storageClass: <storage_class_name> 
    2
    
          perWorkspaceStrategyPvcConfig:
            claimSize: <claim_size> 
    3
    
            storageClass: <storage_class_name> 
    4
    
          pvcStrategy: <pvc_strategy> 
    5
    Copy to Clipboard
    1 3
    持久性卷声明大小。
    2 4
    持久性卷声明的存储类。当省略或留空时,会使用默认存储类。
    5
    持久性卷声明策略。支持的策略有:per-user (一个卷中的所有工作区持久性卷声明)、per-workspace (每个工作区都有自己的独立持久性卷声明)和 ephemeral (非持久性存储,当工作区停止时本地更改将会丢失。)

4.9.2. 配置存储策略

通过选择存储策略,可以将 OpenShift Dev Spaces 配置为向工作区提供持久性或非持久性存储。默认情况下,所选存储策略将应用到所有新创建的工作区。用户可以为 devfile 中的工作区选择非默认存储策略,或者通过 URL 参数 选择。

可用的存储策略:

  • 每个用户 :对用户创建的所有工作区使用单个 PVC。
  • per-workspace: 每个工作区都会被赋予自己的 PVC。
  • Ephemeral: Non-persistent storage; 当工作区停止后,任何本地更改都会丢失。

OpenShift Dev Spaces 中使用的默认存储策略是 每个用户

流程

  1. 将 Che Cluster Custom Resource 中的 pvcStrategy 字段设置为 per-userper-workspaceephemeral
注意
spec:
  devEnvironments:
    storage:
      pvc:
        pvcStrategy: 'per-user' 
1
Copy to Clipboard
1
可用的存储策略是 按用户、每个 工作区临时的

4.9.3. 配置存储大小

您可以使用 per-userper-workspace 存储策略配置持久性卷声明(PVC)大小。您必须使用 CheCluster 自定义资源的 PVC 大小,格式为 Kubernetes 资源数量。有关可用存储策略的详情,请查看 此页面

默认持久性卷声明大小:

  • per-user: 10Gi
    Copy to Clipboard
  • per-workspace: 5Gi
    Copy to Clipboard

流程

  1. 在 Che Cluster Custom Resource 中为所需的存储策略设置适当的 claimSize 字段。
注意
spec:
  devEnvironments:
    storage:
      pvc:
        pvcStrategy: '<strategy_name>'  
1

        perUserStrategyPvcConfig: 
2

          claimSize: <resource_quantity> 
3

        perWorkspaceStrategyPvcConfig:  
4

          claimSize: <resource_quantity> 
5
Copy to Clipboard
1
选择存储策略: per-userper-workspaceephemeral。注: 临时存储 策略不使用持久性存储,因此您无法配置其存储大小或其他与 PVC 相关的属性。
2 4
在下一行中指定声明大小,或者省略下一行来设置默认的声明大小值。只有在您选择此存储策略时,才会使用指定的声明大小。
3 5
声明大小必须指定为 Kubernetes 资源数量。可用数量单位包括: EiPiTiGiMiKi

4.9.4. 持久用户主页

Red Hat OpenShift Dev Spaces 提供了一个永久的主目录功能,允许每个非临时工作区在工作空间重启后保留其 /home/user 目录。您可以通过将 spec.devEnvironments.persistUserHome.enabled 设置为 true,在 CheCluster 中启用此功能。

对于新启动的工作区,此功能会创建一个挂载到工具容器的 /home/user 路径的 PVC。在本文档中,将使用"tools 容器"来指代 devfile 中的第一个容器。此容器是默认包含项目源代码的容器。

当首次挂载 PVC 时,持久性卷的内容为空,因此必须使用 /home/user 目录内容填充。

默认情况下,persistent UserHome 功能为每个名为 init-persistent-home 的新工作区 pod 创建一个 init 容器。此 init 容器使用工具容器镜像创建,并负责运行 stow 命令在持久性卷中创建符号链接以填充 /home/user 目录。

注意

对于不能符号链接到 /home/user 目录的文件,如 .viminfo.bashrc 文件,则会使用 cp 而不是 stow

stow 命令的主要功能是运行:

stow -t /home/user/ -d /home/tooling/ --no-folding
Copy to Clipboard

以上命令在 /home/user 中为位于 /home/tooling 的文件和目录创建符号链接。这会使用指向 /home/tool 中内容的符号链接填充持久卷。因此,persistent UserHome 功能预期工具镜像在 /home/tooling 中包含其 /home/user/ 内容。

例如,如果工具容器镜像包含 home/tooling 目录中的文件,如 .config.config-folder/another-file,则 stow 将以以下方式在持久性卷中创建符号链接:

图 4.11. 启用 persistUserHome 的工具容器

持久的用户主页示例场景

init 容器将 stow 命令的输出写入 /home/user/.stow.log,并且仅在持久性卷第一次挂载到工作区时运行 stow

使用 stow 命令在持久性卷中填充 /home/user 内容有两个主要优点:

  1. 与在持久性卷中创建 /home/user 目录内容的副本相比,创建符号链接速度更快且消耗较少的存储。为了以不同方式放置它,本例中的持久卷包含符号链接,而不是实际文件本身。
  2. 如果使用现有二进制文件、配置和文件的较新版本更新工具镜像,则 init 容器不需要 研究 新版本,因为现有符号链接将链接到 /home/tooling 中的较新版本。
注意

如果工具镜像使用额外的二进制文件或文件更新,则不会以符号形式链接到 /home/user 目录,因为 stow 命令不会被再次运行。在这种情况下,用户必须删除 /home/user/.stow_completed 文件,然后重新启动工作区来重新运行 stow

persistUserHome 工具镜像要求

persistUserHome 依赖于用于工作区的工具镜像。默认情况下,OpenShift Dev Spaces 使用通用基础镜像(UDI)作为示例工作区,它支持 persistentUserHome 开箱即用。

如果您使用自定义镜像,应该满足三个要求来支持 persistUserHome 功能。

  1. 工具镜像应包含 stow 版本 >= 2.4.0。
  2. $HOME 环境变量设置为 /home/user
  3. 在工具镜像中,要包含 /home/user 内容的目录是 /home/tooling

由于要求三个,例如,默认的 UDI 镜像将 /home/user 内容添加到 /home/tooling 中,并运行:

RUN stow -t /home/user/ -d /home/tooling/ --no-folding
Copy to Clipboard

在 Dockerfile 中,使 /home/tooling 中的文件可以从 /home/user 访问,即使没有使用 persistUserHome 功能。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat