5.2. CSI inline 临时卷


借助容器存储接口(CSI)内联临时卷,您可以定义 Pod 规格,在 pod 部署时创建内联临时卷,并在 pod 销毁时删除它们。

此功能仅适用于受支持的 Container Storage Interface (CSI)驱动程序:

  • 共享资源 CSI 驱动程序
  • Azure File CSI 驱动程序
  • Secret Store CSI 驱动程序

5.2.1. CSI 内联临时卷概述

通常,由 Container Storage Interface(CSI)驱动程序支持的卷只能用于 PersistentVolumePersistentVolumeClaim 对象的组合。

通过此功能,可以在 Pod 规格中直接指定 CSI 卷,而不是在 PersistentVolume 中指定。内联卷是临时的,在 pod 重启后不会保留。

5.2.1.1. 支持限制

在默认情况下,OpenShift Container Platform 支持 CSI 内联临时卷,但有以下限制:

  • 仅支持 CSI 驱动程序。不支持 in-tree 和 FlexVolumes。
  • 共享资源 CSI 驱动程序只支持使用内联临时卷访问多个命名空间中的 SecretConfigMap,作为技术预览功能。
  • 社区或存储供应商提供其他支持这些卷的 CSI 驱动程序。按照 CSI 驱动程序供应商提供的说明进行操作。

CSI 驱动程序可能没有实现内联卷功能,包括 Ephemeral 能力。详情请查看 CSI 驱动程序文档。

重要

共享资源 CSI 驱动程序只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

5.2.2. CSI Volume Admission 插件

Container Storage Interface (CSI) Volume Admission 插件允许您限制在 pod 准入上置备 CSI 临时卷的独立 CSI 驱动程序的使用。管理员可以添加 csi-ephemeral-volume-profile 标签,然后 Admission 插件会检查该标签,并在强制、警告和审核决策中使用。

5.2.2.1. 概述

要使用 CSI Volume Admission 插件,管理员将 security.openshift.io/csi-ephemeral-volume-profile 标签添加到 CSIDriver 对象,它会在用来提供 CSI 驱动程序时声明 CSI 驱动程序的有效 pod 安全配置集,如下例所示:

kind: CSIDriver
metadata:
  name: csi.mydriver.company.org
  labels:
    security.openshift.io/csi-ephemeral-volume-profile: restricted 1
1
CSI 驱动程序对象 YAML 文件,将 csi-ephemeral-volume-profile 标签设置为 "restricted"

此"有效配置集"通信 pod 可以使用 CSI 驱动程序在 pod 安全标准管理时挂载 CSI 临时卷。

CSI Volume Admission 插件在创建 pod 时检查 pod 卷 ; 使用 CSI 卷的现有 pod 不受影响。如果 pod 使用容器存储接口(CSI)卷,插件会查找 CSIDriver 对象并检查 csi-ephemeral-volume-profile 标签,然后在强制、警告和审计决策中使用标签值。

5.2.2.2. Pod 安全配置集强制

当 CSI 驱动程序具有 csi-ephemeral-volume-profile 标签时,使用 CSI 驱动程序挂载 CSI 临时卷的 pod 必须在强制实施相等或更高权限的 pod 安全标准的命名空间中运行。如果命名空间强制实施更严格的标准,CSI Volume Admission 插件会拒绝准入。下表描述了给定标签值的不同 pod 安全配置集的强制行为。

表 5.2. Pod 安全配置集强制
Pod 安全配置集驱动程序标签: restricted驱动程序标签: baseline驱动程序标签: privileged

Restricted

Allowed

Denied

Denied

Baseline

Allowed

Allowed

Denied

Privileged

Allowed

Allowed

Allowed

5.2.2.3. Pod 安全配置集警告

如果 CSI 驱动程序的有效配置集比 pod 命名空间的 pod 安全警告配置集更宽松,则 CSI Volume Admission 插件可能会发出警告。下表显示了何时为给定标签值的不同 pod 安全配置集发生警告。

表 5.3. Pod 安全配置集警告
Pod 安全配置集驱动程序标签: restricted驱动程序标签: baseline驱动程序标签: privileged

Restricted

No warning

Warning

Warning

Baseline

No warning

No warning

Warning

Privileged

No warning

No warning

No warning

5.2.2.4. Pod 安全配置集审核

如果 CSI 驱动程序的有效配置集比 pod 命名空间的 pod 安全审计配置集更宽松,则 CSI Volume Admission 插件可以将 audit 注解应用到 pod。下表显示了针对给定标签值的不同 pod 安全配置集应用的 audit 注解。

表 5.4. Pod 安全配置集审核
Pod 安全配置集驱动程序标签: restricted驱动程序标签: baseline驱动程序标签: privileged

Restricted

No audit

Audit

Audit

Baseline

No audit

No audit

Audit

Privileged

No audit

No audit

No audit

5.2.2.5. CSI Volume Admission 插件的默认行为

如果 CSI 临时卷引用的 CSI 驱动程序没有 csi-ephemeral-volume-profile 标签,CSI Volume Admission 插件会考虑驱动程序具有强制、警告和审计行为的 privileged 配置集。同样,如果 pod 的命名空间没有设置 pod 安全准入标签,Admission 插件会假定允许 restricted 配置集强制、警告和审核决策。因此,如果没有设置标签,则使用该 CSI 驱动程序的 CSI 临时卷默认仅在特权命名空间中可用。

OpenShift Container Platform 和支持临时卷附带的 CSI 驱动程序为 csi-ephemeral-volume-profile 标签设置了合理的默认设置:

  • 共享资源 CSI 驱动程序: restricted
  • Azure File CSI 驱动程序: privileged

如果需要,管理员可以更改标签的默认值。

5.2.3. 在 pod 规格中嵌入 CSI 内联临时卷

您可以在 OpenShift Container Platform 中的 Pod 规格中嵌入 CSI 内联临时卷。在运行时,嵌套的内联卷遵循与其关联的 Pod 的临时生命周期,以便 CSI 驱动程序在 Pod 创建和销毁时处理卷操作的所有阶段。

流程

  1. 创建 Pod 对象定义,并将其保存到文件中。
  2. 在该文件中嵌入 CSI 内联临时卷。

    my-csi-app.yaml

    kind: Pod
    apiVersion: v1
    metadata:
      name: my-csi-app
    spec:
      containers:
        - name: my-frontend
          image: busybox
          volumeMounts:
          - mountPath: "/data"
            name: my-csi-inline-vol
          command: [ "sleep", "1000000" ]
      volumes: 1
        - name: my-csi-inline-vol
          csi:
            driver: inline.storage.kubernetes.io
            volumeAttributes:
              foo: bar

    1
    Pod 使用的卷的名称。
  3. 创建在上一步中保存的对象定义文件。

    $ oc create -f my-csi-app.yaml

5.2.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.