×

容器存储接口 (CSI) 内联临时卷允许您定义一个Pod规范,该规范在部署Pod时创建内联临时卷,并在销毁Pod时删除它们。

此功能仅适用于受支持的容器存储接口 (CSI) 驱动程序

  • 共享资源CSI驱动程序

  • Azure File CSI驱动程序

  • Secrets Store CSI驱动程序

CSI内联临时卷概述

传统上,由容器存储接口 (CSI) 驱动程序支持的卷只能与PersistentVolumePersistentVolumeClaim对象组合一起使用。

此功能允许您直接在Pod规范中指定CSI卷,而不是在PersistentVolume对象中指定。内联卷是临时的,不会跨Pod重启持久化。

支持限制

共享资源CSI驱动程序功能现在在Red Hat OpenShift 1.1构建中普遍可用。此功能现在在OpenShift Container Platform中已弃用。要使用此功能,请确保您使用的是Red Hat OpenShift 1.1构建或更高版本。

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

  • 仅支持CSI驱动程序。不支持树内和FlexVolumes。

  • 共享资源CSI驱动程序支持仅使用内联临时卷作为OpenShift Container Platform中的技术预览功能来访问跨多个命名空间的SecretsConfigMaps

  • 社区或存储供应商提供支持这些卷的其他CSI驱动程序。请遵循CSI驱动程序提供商提供的安装说明。

CSI驱动程序可能未实现内联卷功能,包括Ephemeral容量。有关详细信息,请参阅CSI驱动程序文档。

CSI卷准入插件

容器存储接口 (CSI) 卷准入插件允许您限制在Pod准入时使用能够预配CSI临时卷的单个CSI驱动程序。管理员可以添加csi-ephemeral-volume-profile标签,然后准入插件检查此标签并将其用于强制执行、警告和审计决策。

概述

要使用CSI卷准入插件,管理员需要将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-ephemeral-volume-profile标签为“restricted”的CSI驱动程序对象YAML文件

此“有效配置文件”表示当Pod的命名空间受Pod安全标准管理时,Pod可以使用CSI驱动程序来挂载CSI临时卷。

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

Pod安全配置文件强制执行

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

表1. Pod安全配置文件强制执行
Pod安全配置文件 驱动程序标签:restricted 驱动程序标签:baseline 驱动程序标签:privileged

Restricted

允许

拒绝

拒绝

Baseline

允许

允许

拒绝

Privileged

允许

允许

允许

Pod安全配置文件警告

如果CSI驱动程序的有效配置文件比Pod命名空间的Pod安全警告配置文件更宽松,则CSI卷准入插件会发出警告。下表显示了针对给定标签值的不同Pod安全配置文件何时会发出警告。

表2. Pod安全配置文件警告
Pod安全配置文件 驱动程序标签:restricted 驱动程序标签:baseline 驱动程序标签:privileged

Restricted

无警告

警告

警告

Baseline

无警告

无警告

警告

Privileged

无警告

无警告

无警告

Pod安全配置文件审计

如果 CSI 驱动程序的有效配置文件比 Pod 命名空间的 Pod 安全审计配置文件更宽松,则 CSI 卷准入插件可以将审计注释应用于 Pod。下表显示了针对给定标签值的不同的 Pod 安全配置文件应用的审计注释。

表 3. Pod 安全配置文件审计
Pod安全配置文件 驱动程序标签:restricted 驱动程序标签:baseline 驱动程序标签:privileged

Restricted

无审计

审计

审计

Baseline

无审计

无审计

审计

Privileged

无审计

无审计

无审计

CSI 卷准入插件的默认行为

如果 CSI 短暂卷引用的 CSI 驱动程序不具有csi-ephemeral-volume-profile标签,则 CSI 卷准入插件认为该驱动程序具有特权配置文件,用于执行、警告和审计行为。同样,如果 Pod 的命名空间未设置 Pod 安全准入标签,则准入插件假定允许使用受限配置文件进行执行、警告和审计决策。因此,如果未设置任何标签,则默认情况下,使用该 CSI 驱动程序的 CSI 短暂卷只能在特权命名空间中使用。

与 OpenShift Container Platform 一起提供的并支持短暂卷的 CSI 驱动程序具有csi-ephemeral-volume-profile标签的合理默认设置。

  • 共享资源 CSI 驱动程序:受限

  • Azure 文件 CSI 驱动程序:特权

管理员可以根据需要更改标签的默认值。

在 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

其他资源