Menu Close

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

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

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

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

重要

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

其他资源

3.4.1. 创建 Azure File 共享持久性卷声明

要创建持久性卷声明,您必须首先定义一个包含 Azure 帐户和密钥的 Secret 对象。此 secret 在 PersistentVolume 定义中使用,应用程序中使用的持久性卷声明将引用该 secret。

先决条件

  • 已存在 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
    持久性卷的名称。
    2
    此持久性卷的大小。
    3
    包含 Azure File 共享凭证的 secret 名称。
    4
    Azure File 共享的名称。
  3. 创建映射到您创建的持久性卷的 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
    持久性卷声明的名称。
    2
    持久性卷声明的大小。
    3
    用于置备持久性卷的存储类的名称。指定 PersistentVolume 定义中使用的存储类。
    4
    引用 Azure File 共享的现有 PersistentVolume 对象的名称。

3.4.2. 在 pod 中挂载 Azure File 共享

创建持久性卷声明后,应用程序就可以使用它。以下示例演示了在 pod 中挂载此共享。

先决条件

  • 已存在一个映射到底层 Azure File 共享的持久性卷声明。

流程

  • 创建可挂载现有持久性卷声明的 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 对象的名称。