NetApp ONTAP NFS 配置
要通过NFS与NetApp ONTAP 存储系统实现Trident集成、您必须创建一个后端、以便与存储系统进行通信。我们在此解决方案 中配置了一个基本后端、但如果您要查找更多自定义选项、请访问相关文档 "此处"。
在ONTAP 中创建SVM
-
登录到ONTAP 系统管理器、导航到存储> Storage VM、然后单击添加。
-
输入SVM的名称、启用NFS协议、选中允许NFS客户端访问复选框、然后在导出策略规则中添加工作节点所在的子网、以便允许将卷作为PV挂载到工作负载集群中。
如果您要在NSX-T中使用NAT部署用户集群或工作负载集群、则需要将出口子网(对于TKGS0)或浮动IP子网(对于TKGI)添加到导出策略规则中。 -
提供数据LIF的详细信息以及SVM管理帐户的详细信息、然后单击保存。
-
将聚合分配给SVM。导航到存储>存储VM、单击新创建的SVM旁边的省略号、然后单击编辑。选中将卷创建限制为首选本地层复选框、并将所需聚合附加到其中。
-
如果要安装Trident的用户或工作负载集群采用NAT方式进行部署、则由于SNAT、存储挂载请求可能来自非标准端口。默认情况下、ONTAP 仅允许从根端口发出卷挂载请求。因此、请登录到ONTAP 命令行界面并修改设置、以允许来自非标准端口的挂载请求。
ontap-01> vserver nfs modify -vserver tanzu_svm -mount-rootonly disabled
创建后端和StorageClasses
-
对于提供NFS服务的NetApp ONTAP 系统、请使用backendName、managementLIF、dataLIF、SVM、username在jumphost上创建一个后端配置文件。 密码和其他详细信息。
{ "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