2.4. 使用 Azure File 的持久性存储

OpenShift Container Platform 支持 Microsoft Azure File 卷。您可以使用 Azure 为 OpenShift Container Platform 集群置备永久性存储。我们假设您对 Kubernetes 和 Azure 有一定的了解。

Kubernetes 持久性卷框架允许管理员提供带有持久性存储的集群,并使用户可以在不了解底层存储架构的情况下请求这些资源。Azure File 卷可以动态置备。

持久性卷不与某个特定项目或命名空间相关联,它们可以在 OpenShift Container Platform 集群间共享。PersistentVolumeClaim 是针对某一项目或命名空间的,应用程序中相应的用户可请求它。

重要

存储的高可用性功能由底层的存储架构提供。

其他参考资源

2.4.1. 创建 Azure File 共享 PersistentVolumeClaim

要创建 PersistentVolumeClaim,您必须首先定义包含 Azure 帐户和密钥的 Secret。这个 Secret 用在 PersistentVolume 定义中,应用程序中使用的 PersistentVolumeClaim 将引用它。

先决条件

  • 已存在 Azure File 共享。
  • 有访问此共享所需的凭证,特别是存储帐户和密钥。

流程

  1. 创建包含 Azure File 凭证的 Secret:

    $ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ 1
      --from-literal=azurestorageaccountkey=<storage-account-key> 2
    1
    Azure File 存储帐户名称。
    2
    Azure File 存储帐户密钥。
  2. 创建一个引用您创建的 Secret 的 PersistentVolume:

    apiVersion: "v1"
    kind: "PersistentVolume"
    metadata:
      name: "pv0001" 1
    spec:
      capacity:
        storage: "5Gi" 2
      accessModes:
        - "ReadWriteOnce"
      storageClassName: azure-file-sc
      azureFile:
        secretName: <secret-name> 3
        shareName: share-1 4
        readOnly: false
    1
    PersistentVolume 的名称。
    2
    此 PersistentVolume 的大小。
    3
    包含 Azure File 共享凭证的 Secret 名称。
    4
    Azure File 共享的名称。
  3. 创建一个映射到您创建的 PersistentVolume 的 PersistentVolumeClaim:

    apiVersion: "v1"
    kind: "PersistentVolumeClaim"
    metadata:
      name: "claim1" 1
    spec:
      accessModes:
        - "ReadWriteOnce"
      resources:
        requests:
          storage: "5Gi" 2
      storageClassName: azure-file-sc 3
      volumeName: "pv0001" 4
    1
    PersistentVolumeClaim 的名称。
    2
    此 PersistentVolumeClaim 的大小。
    3
    用于置备 PersistentVolume 的 StorageClass 名称。指定 PersistentVolume 定义中使用的 StorageClass。
    4
    引用 Azure File 共享的现有 PersistentVolume 的名称。

2.4.2. 在 Pod 中挂载 Azure File 共享

创建 PersistentVolumeClaim 后,应用程序就可以使用它。以下示例演示了在 Pod 中挂载此共享。

先决条件

  • PersistentVolumeClaim 存在,已映射到底层的 Azure File 共享。

流程

  • 创建可挂载现有 PersistentVolumeClaim 的 Pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-name 1
    spec:
      containers:
        ...
        volumeMounts:
        - mountPath: "/data" 2
          name: azure-file-share
      volumes:
        - name: azure-file-share
          persistentVolumeClaim:
            claimName: claim1 3
    1
    Pod 的名称。
    2
    在 Pod 中挂载 Azure File 共享的路径。
    3
    之前创建的 PersistentVolumeClaim 的名称。