设置动态供应

缺省情况下, 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 服务器。 至少,您必须具有服务器的主机名。

要配置动态存储器,请执行以下操作:

  1. 确保可从 Red Hat OpenShift Container Platform 集群访问 NFS 服务器。
  2. 克隆 https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner 存储库。
  3. 打开 bash shell 并切换到存储库的 deploy 目录。
  4. 以具有足够许可权的用户身份登录到 Red Hat OpenShift Container Platform 集群,以完成该任务:
    oc login OpenShift_URL:port
  5. 通过运行以下命令以向配置程序授权。
    1. 创建必需的基于角色的访问控制。
      要点: 如果您计划将 NFS 供应程序部署到 default 项目以外的项目, 在运行此命令之前,必须替换 rbac.yaml 文件中的每个 default 实例。
      oc create -f rbac.yaml
    2. nfs-client-provisioner 安全上下文约束添加到 system 服务帐户。

      如果计划将 NFS 配置程序部署到 default 项目以外的项目,请在以下命令中替换 default

      oc adm policy add-scc-to-user hostmount-anyuid system:serviceaccount:default:nfs-client-provisioner
  6. 编辑 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
  7. 部署 NFS 供应程序:
    oc create -f deployment.yaml
  8. 编辑 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
  9. 创建存储类:
    oc create -f class.yaml
  10. 验证 NFS 供应程序是否正确运行:
    1. 创建测试持久卷声明 (PVC)。
      注: 以下命令使用存储库的 deploy 目录中的文件。 test-claim.yaml 文件使用 managed-nfs-storage 存储类。
      oc create -f test-claim.yaml -f test-pod.yaml
    2. NFS 服务器上,验证 deployment.yaml 文件中指定的共享目录是否包含名为 SUCCESS的文件。
    3. 移除测试 PVC:
      oc delete -f test-pod.yaml -f test-claim.yaml