4.3. Serving 的持久性卷声明
有些无服务器应用程序需要持久性数据存储。通过配置不同的卷类型,您可以为 Knative 服务提供数据存储。服务支持挂载卷类型,如 secret
、configMap
、projected
、和 emptyDir
。
您可以为 Knative 服务配置持久性卷声明(PVC)。持久性卷类型作为插件实现。要确定是否有可用的持久性卷类型,您可以检查集群中的可用或安装的存储类。支持持久性卷,但需要启用功能标记。
大型卷的挂载可能会导致应用程序的开始时间出现显著的延迟。
4.3.1. 启用 PVC 支持
流程
要启用 Knative Serving 使用 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,请修改您的服务使其包含 PV 配置。例如,您可能具有以下配置的持久性卷声明:
注意使用支持您请求的访问模式的存储类。例如,您可以使用
ReadWriteMany
访问模式的ocs-storagecluster-cephfs
存储类。支持
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
注意要在 Knative 服务中成功使用持久性存储,您需要额外的配置,如 Knative 容器用户的用户权限。