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 版本中,计划使用现有树内插件置备的卷迁移到对应的 CSI 驱动程序。CSI 自动迁移应该可以无缝进行。迁移不会改变您使用所有现有 API 对象的方式,如持久性卷、持久性卷声明和存储类。有关迁移的更多信息,请参阅 CSI 自动迁移。
完全迁移后,未来的 OpenShift Container Platform 版本将最终删除树内插件。
其他资源
4.3.1. 创建 Azure File 共享持久性卷声明
要创建持久性卷声明,您必须首先定义一个包含 Azure 帐户和密钥的 Secret
对象。此 secret 在 PersistentVolume
定义中使用,应用程序中使用的持久性卷声明将引用该 secret。
先决条件
- 已存在 Azure File 共享。
- 有访问此共享所需的凭证,特别是存储帐户和密钥。
流程
创建包含 Azure File 凭证的
Secret
对象:$ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ 1 --from-literal=azurestorageaccountkey=<storage-account-key> 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
创建映射到您创建的持久性卷的
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
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