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


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

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

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

重要

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

重要

Azure File 卷使用服务器消息块。

重要

OpenShift Container Platform 4.13 及更新的版本为 Azure File in-tree 卷插件提供自动迁移到对应的 CSI 驱动程序。

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

其他资源

4.3.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 对象的名称。

4.3.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 共享的路径。不要挂载到容器 root、/ 或主机和容器中相同的任何路径。如果容器有足够权限,可能会损坏您的主机系统(如主机的 /dev/pts 文件)。使用 /host 挂载主机是安全的。
    3
    之前创建的 PersistentVolumeClaim 对象的名称。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.