NetApp ONTAP NFS 配置
要通过 NFS 实现Trident与NetApp ONTAP存储系统的集成,您必须创建一个能够与存储系统通信的后端。我们在此解决方案中配置了一个基本的后端,但如果您正在寻找更多自定义选项,请访问文档"此处"。
在ONTAP中创建 SVM
-
登录ONTAP系统管理器,导航到“存储”>“存储虚拟机”,然后单击“添加”。
-
输入 SVM 的名称,启用 NFS 协议,选中允许 NFS 客户端访问复选框,并在导出策略规则中添加工作节点所在的子网,以允许将卷作为 PV 挂载到工作负载集群中。
如果您使用 NSX-T 的 NAT 部署用户集群或工作负载集群,则需要将出口子网(对于 TKGS0 而言)或浮动 IP 子网(对于 TKGI 而言)添加到导出策略规则中。 -
提供数据 LIF 的详细信息和 SVM 管理帐户的详细信息,然后单击“保存”。
-
将聚合分配给 SVM。导航到“存储”>“存储虚拟机”,单击新创建的 SVM 旁边的省略号,然后单击“编辑”。选中“限制卷创建到首选本地层”复选框并将所需的聚合附加到该复选框。
-
如果要安装Trident的用户或工作负载集群采用 NAT 部署,则由于 SNAT,存储挂载请求可能会从非标准端口到达。默认情况下, ONTAP仅允许来自根端口的卷挂载请求。因此,登录ONTAP CLI 并修改设置以允许来自非标准端口的挂载请求。
ontap-01> vserver nfs modify -vserver tanzu_svm -mount-rootonly disabled
创建后端和存储类
-
对于提供 NFS 服务的NetApp ONTAP系统,请在跳转主机上创建后端配置文件,其中包含 backendName、managementLIF、dataLIF、svm、用户名、密码和其他详细信息。
{ "version": 1, "storageDriverName": "ontap-nas", "backendName": "ontap-nas+10.61.181.221", "managementLIF": "172.21.224.201", "dataLIF": "10.61.181.221", "svm": "trident_svm", "username": "admin", "password": "password" }
最佳做法是将自定义 backendName 值定义为 storageDriverName 和为 NFS 提供服务的 dataLIF 的组合,以便于识别。 -
通过运行以下命令创建Trident后端。
[netapp-user@rhel7]$ ./tridentctl -n trident create backend -f backend-ontap-nas.json +-------------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +-------------------------+----------------+--------------------------------------+--------+---------+ | ontap-nas+10.61.181.221 | ontap-nas | be7a619d-c81d-445c-b80c-5c87a73c5b1e | online | 0 | +-------------------------+----------------+--------------------------------------+--------+---------+
-
创建后端后,接下来必须创建存储类。以下示例存储类定义突出显示了必需字段和基本字段。参数 `backendType`应该反映新创建的Trident后端的存储驱动程序。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ontap-nfs provisioner: csi.trident.netapp.io parameters: backendType: "ontap-nas"
-
通过运行 kubectl 命令创建存储类。
[netapp-user@rhel7 trident-installer]$ kubectl create -f storage-class-nfs.yaml storageclass.storage.k8s.io/ontap-nfs created
-
创建存储类后,您必须创建第一个持久卷声明 (PVC)。下面给出了一个 PVC 定义示例。确保 `storageClassName`字段与刚刚创建的存储类的名称匹配。 PVC 定义可以根据需要配置的工作负载进一步定制。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: basic spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: ontap-nfs
-
通过发出 kubectl 命令创建 PVC。创建可能需要一些时间,具体取决于所创建的备份卷的大小,因此您可以在创建完成时观察该过程。
[netapp-user@rhel7 trident-installer]$ kubectl create -f pvc-basic.yaml persistentvolumeclaim/basic created [netapp-user@rhel7 trident-installer]$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE basic Bound pvc-b4370d37-0fa4-4c17-bd86-94f96c94b42d 1Gi RWO ontap-nfs 7s