×

OpenShift Container Platform 支持 Microsoft Azure 文件卷。您可以使用 Azure 为 OpenShift Container Platform 集群配置持久性存储。假设您已熟悉 Kubernetes 和 Azure。

Kubernetes 持久卷框架允许管理员为集群配置持久性存储,并为用户提供一种无需了解底层基础架构即可请求这些资源的方法。您可以动态配置 Azure 文件卷。

持久卷不绑定到单个项目或命名空间,您可以跨 OpenShift Container Platform 集群共享它们。持久卷声明特定于项目或命名空间,用户可以请求它们以用于应用程序。

基础架构中存储的高可用性留给底层存储提供商。

Azure 文件卷使用服务器消息块。

OpenShift Container Platform 4.13 及更高版本为 Azure 文件内置卷插件到其等效的 CSI 驱动程序提供自动迁移。

CSI 自动迁移应该无缝进行。迁移不会更改您使用所有现有 API 对象的方式,例如持久卷、持久卷声明和存储类。有关迁移的更多信息,请参阅 CSI 自动迁移

其他资源

创建 Azure 文件共享持久卷声明

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

先决条件
  • 存在 Azure 文件共享。

  • 访问此共享的凭据,特别是存储帐户和密钥可用。

步骤
  1. 创建一个包含 Azure 文件凭据的Secret 对象

    $ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ (1)
      --from-literal=azurestorageaccountkey=<storage-account-key> (2)
    
    1 Azure 文件存储帐户名称。
    2 Azure 文件存储帐户密钥。
  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 文件共享凭据的密钥的名称。
    4 Azure 文件共享的名称。
  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 文件共享的现有PersistentVolume 对象的名称。

在 Pod 中挂载 Azure 文件共享

创建持久卷声明后,应用程序内部可以使用它。以下示例演示在 Pod 内挂载此共享。

先决条件
  • 存在一个映射到底层 Azure 文件共享的持久卷声明。

步骤
  • 创建一个挂载现有持久卷声明的 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 文件共享的路径。请勿挂载到容器根目录 / 或主机和容器中路径相同的任何位置。如果容器具有足够的权限(例如主机 /dev/pts 文件),这可能会损坏您的主机系统。使用 /host 挂载主机是安全的。
    3 先前创建的 PersistentVolumeClaim 对象的名称。