×

某些无服务器应用程序需要永久数据存储。通过配置不同的卷类型,您可以为 Knative 服务提供数据存储。Serving 支持挂载诸如secretconfigMapprojectedemptyDir 等卷类型。

您可以为 Knative 服务配置持久卷声明 (PVC)。持久卷类型作为插件实现。要确定是否有任何可用的持久卷类型,您可以检查集群中可用的或已安装的存储类。支持持久卷,但需要启用功能标志。

挂载大型卷可能会导致应用程序启动时间显著延迟。

启用 PVC 支持

步骤
  1. 要启用 Knative Serving 使用 PVC 并写入 PVC,请修改KnativeServing 自定义资源 (CR) 以包含以下 YAML

    启用具有写入访问权限的 PVC
    ...
    spec:
      config:
        features:
          "kubernetes.podspec-persistent-volume-claim": enabled
          "kubernetes.podspec-persistent-volume-write": enabled
    ...
    • kubernetes.podspec-persistent-volume-claim 扩展控制是否可以将持久卷 (PV) 与 Knative Serving 一起使用。

    • kubernetes.podspec-persistent-volume-write 扩展控制 Knative Serving 是否可以访问具有写入访问权限的 PV。

  2. 要声明 PV,请修改您的服务以包含 PV 配置。例如,您可能有一个具有以下配置的持久卷声明

    使用支持您请求的访问模式的存储类。例如,您可以使用ocs-storagecluster-cephfs 存储类来进行ReadWriteMany 访问模式。

    ocs-storagecluster-cephfs 存储类受支持,来自Red Hat OpenShift Data Foundation

    PersistentVolumeClaim 配置
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-pv-claim
      namespace: my-ns
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ocs-storagecluster-cephfs
      resources:
        requests:
          storage: 1Gi

    在这种情况下,要声明具有写入访问权限的 PV,请按如下方式修改您的服务

    Knative 服务 PVC 配置
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      namespace: my-ns
    ...
    spec:
     template:
       spec:
         containers:
             ...
             volumeMounts: (1)
               - mountPath: /data
                 name: mydata
                 readOnly: false
         volumes:
           - name: mydata
             persistentVolumeClaim: (2)
               claimName: example-pv-claim
               readOnly: false (3)
    1 卷挂载规范。
    2 持久卷声明规范。
    3 启用只读访问的标志。

    要在 Knative 服务中成功使用持久性存储,您需要额外的配置,例如 Knative 容器用户的用户权限。

OpenShift Container Platform 的其他资源