$ oc create secret generic <secret-name> --from-literal=azurestorageaccountname=<storage-account> \ (1)
--from-literal=azurestorageaccountkey=<storage-account-key> (2)
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 帐户和密钥的Secret
对象。此密钥用于PersistentVolume
定义中,并将被持久卷声明引用以用于应用程序。
存在 Azure 文件共享。
访问此共享的凭据,特别是存储帐户和密钥可用。
创建一个包含 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 文件存储帐户密钥。 |
创建一个引用您创建的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 文件共享的名称。 |
创建一个映射到您创建的持久卷的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
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 对象的名称。 |