设置动态供应
缺省情况下, NFS 不支持动态存储器供应,并且 Red Hat® OpenShift® 不包含用于创建 NFS 存储类的供应程序插件。 因此,必须在 NFS 服务器上设置动态存储器供应。
如果要在 Cloud Pak for Data上安装以下任何服务, 在设置动态供应之前,请确保 您的 NFS 服务器已配置 :
- DataStage®
- Db2®
- Db2 Big SQL
- Db2 Warehouse
- OpenPages®
- Watson Knowledge Catalog
- Data Virtualization
配置动态存储器
要动态供应 NFS 存储器,请使用 Kubernetes NFS-Client Provisioner(可从 GitHub上的 Kubernetes SIG 组织获取)。
- 此任务所需的许可权
- 您必须是集群管理员。
重要信息: 以下步骤假定您具有现有 NFS 服务器。 确保您知道如何连接到 NFS 服务器。 至少,您必须具有服务器的主机名。
要配置动态存储器,请执行以下操作:
- 确保可从 Red Hat OpenShift Container Platform 集群访问 NFS 服务器。
- 克隆 https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner 存储库。
- 打开
bashshell 并切换到存储库的 deploy 目录。 - 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 集群,以完成该任务:
oc login OpenShift_URL:port - 通过运行以下命令以向配置程序授权。
- 创建必需的基于角色的访问控制。要点: 如果您计划将 NFS 供应程序部署到
default项目以外的项目, 在运行此命令之前,必须替换 rbac.yaml 文件中的每个default实例。oc create -f rbac.yaml - 将
nfs-client-provisioner安全上下文约束添加到system服务帐户。如果计划将 NFS 配置程序部署到
default项目以外的项目,请在以下命令中替换default。oc adm policy add-scc-to-user hostmount-anyuid system:serviceaccount:default:nfs-client-provisioner
- 创建必需的基于角色的访问控制。
- 编辑 deploy 目录中的 deployment.yaml 文件以指定以下信息:
- 部署 NFS 供应程序的项目 (名称空间)
- NFS 服务器的主机名。
- 要在 NFS 服务器上动态供应存储器的路径。
apiVersion: apps/v1 kind: Deployment metadata: name: nfs-client-provisioner labels: app: nfs-client-provisioner namespace: default # Specify the namespace where the NFS provisioner is deployed spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner image: image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0 volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: nfs-storage - name: NFS_SERVER value: MyNFSHostname # Specify the host name of your NFS server - name: NFS_PATH value: /nfs/cpshare/ # Specify the path where you want to provision storage volumes: - name: nfs-client-root nfs: server: MyNFSHostname # Specify the host name of your NFS server path: /nfs/cpshare/ # Specify the path where you want to provision storage - 部署 NFS 供应程序:
oc create -f deployment.yaml - 编辑 class.yaml 文件以指定要创建的存储类的名称。
有关参数的完整列表,请参阅 NFS 配置程序文档中的 部署存储类 。
以下示例显示了建议的managed-nfs-storage存储类:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: managed-nfs-storage # Recommended storage class name provisioner: nfs-client-provisioner # This name must match the value you specified in the deployment.yaml parameters: archiveOnDelete: "false"如果您正在使用以下任何服务,请将mountOptions条目添加到存储类:- DataStage
- Db2
- Db2 Big SQL
- Db2 Warehouse
- OpenPages
- Watson Knowledge Catalog
- Data Virtualization
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: managed-nfs-storage # Recommended storage class name provisioner: nfs-client-provisioner # This name must match the value you specified in the deployment.yaml parameters: archiveOnDelete: "false" mountOptions: - nfsvers=3 - nolock - 创建存储类:
oc create -f class.yaml - 验证 NFS 供应程序是否正确运行:
- 创建测试持久卷声明 (PVC)。注: 以下命令使用存储库的 deploy 目录中的文件。 test-claim.yaml 文件使用
managed-nfs-storage存储类。oc create -f test-claim.yaml -f test-pod.yaml - 在 NFS 服务器上,验证 deployment.yaml 文件中指定的共享目录是否包含名为 SUCCESS的文件。
- 移除测试 PVC:
oc delete -f test-pod.yaml -f test-claim.yaml
- 创建测试持久卷声明 (PVC)。