ONTAP NAS配置选项和示例
了解如何在您的 Astra Trident 安装中创建和使用 ONTAP NAS 驱动程序。本节提供了后端配置示例以及有关如何将后端映射到 StorageClasses 的详细信息。
后端配置选项
有关后端配置选项,请参见下表:
参数 | Description | Default |
---|---|---|
|
始终为 1 |
|
|
存储驱动程序的名称 |
"ontap-nas" , "ontap-nas-economy-" , "ontap-nas-flexgroup" , "ontap-san " , "ontap-san-economy-" |
|
自定义名称或存储后端 |
驱动程序名称 + "_" + dataLIF |
|
集群或SVM管理LIF的IP地址要进行无缝MetroCluster 切换、必须指定SVM管理LIF。 |
"10.0.0.1 " , "2001 : 1234 : abcd ::: fefe] " |
|
协议 LIF 的 IP 地址。对于 IPv6 ,请使用方括号。设置后无法更新 |
由 SVM 派生,除非另有说明 |
|
启用自动创建和更新导出策略 [ 布尔值 ] |
false |
|
用于筛选Kubernetes节点IP的CIDR列表 |
[ "0.0.0.0/0 " , " :: /0 "]` |
|
要应用于卷的一组任意 JSON 格式的标签 |
" |
|
客户端证书的 Base64 编码值。用于基于证书的身份验证 |
" |
|
客户端专用密钥的 Base64 编码值。用于基于证书的身份验证 |
" |
|
受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证 |
" |
|
用于连接到集群 /SVM 的用户名。用于基于凭据的身份验证 |
|
|
连接到集群 /SVM 的密码。用于基于凭据的身份验证 |
|
|
要使用的 Storage Virtual Machine |
如果是SVM、则派生 |
|
要使用的 SAN 卷的 igroup 的名称 |
"trident — < 后端 UUID >" |
|
在 SVM 中配置新卷时使用的前缀。设置后无法更新 |
Trident |
|
如果使用量超过此百分比,则配置失败。* 不适用于适用于 ONTAP 的 Amazon FSx * |
" (默认情况下不强制实施) |
|
如果请求的卷大小超过此值、则配置失败。 |
" (默认情况下不强制实施) |
|
每个 FlexVol 的最大 LUN 数,必须在 50 , 200 范围内 |
100 |
|
故障排除时要使用的调试标志。示例 { "api" : false , "method " : true } |
空 |
|
NFS 挂载选项的逗号分隔列表 |
" |
|
每个 FlexVol 的最大 qtree 数,必须在 50 , 300 范围内 |
200 |
|
用于使用 ONTAP REST API 的布尔参数。MetroCluster 不支持*技术预览*。 |
false |
<code>useREST</code>注意事项
|
要与 ONTAP 集群通信,您应提供身份验证参数。这可以是安全登录的用户名 / 密码,也可以是已安装的证书。
如果您使用适用于NetApp ONTAP 后端的Amazon FSX、请勿指定 limitAggregateUsage 参数。。 fsxadmin 和 vsadmin Amazon FSX for NetApp ONTAP 提供的角色不包含检索聚合使用情况并通过Astra Trident限制聚合使用情况所需的访问权限。
|
请勿使用 debugTraceFlags 除非您正在进行故障排除并需要详细的日志转储。
|
创建后端时、请记住 dataLIF 和 storagePrefix 创建后无法修改。要更新这些参数,您需要创建一个新的后端。
|
可以为指定完全限定域名(FQDN) managementLIF
选项也可以为指定FQDN dataLIF
选项、在这种情况下、FQDN将用于NFS挂载操作。这样,您就可以创建循环 DNS ,以便在多个数据 LIF 之间实现负载平衡。
`managementLIF` 对于所有ONTAP 驱动程序、也可以设置为IPv6地址。确保将Astra Trident安装到 `--use-ipv6` 标志。必须小心定义 `managementLIF` 方括号内的IPv6地址。
使用IPv6地址时、请确保 managementLIF 和 dataLIF (如果包含在后端定义中)在方括号内进行定义、例如、[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。条件 dataLIF 如果未提供、则Astra Trident将从SVM提取IPv6数据LIF。
|
使用 autoExportPolicy
和 autoExportCIDRs
选项、CSI Trident可以自动管理导出策略。所有 ontap-nas-* 驱动程序均支持此功能。
。 ontap-nas-economy
驱动程序、 limitVolumeSize
选项还会限制它为qtree和LUN以及管理的卷的最大大小 qtreesPerFlexvol
选项用于自定义每个FlexVol 的最大qtree数。
。 nfsMountOptions
参数可用于指定挂载选项。Kubernetes 永久性卷的挂载选项通常在存储类中指定,但如果在存储类中未指定挂载选项,则 Astra Trident 将回退为使用存储后端配置文件中指定的挂载选项。如果在存储类或配置文件中未指定挂载选项,则 Astra Trident 不会在关联的永久性卷上设置任何挂载选项。
Astra Trident会在使用创建的所有卷的"Comments"字段中设置配置标签(ontap-nas 和(ontap-nas-flexgroup 。根据所使用的驱动程序、注释将在FlexVol 上进行设置 (ontap-nas )或FlexGroup (ontap-nas-flexgroup )。Astra Trident 会在配置存储池时将存储池上的所有标签复制到该存储卷。存储管理员可以为每个存储池定义标签,并对存储池中创建的所有卷进行分组。这样,您就可以根据后端配置中提供的一组可自定义标签来方便地区分卷了。
|
用于配置卷的后端配置选项
您可以在配置的特殊部分中使用这些选项来控制默认配置每个卷的方式。有关示例,请参见以下配置示例。
参数 | Description | Default |
---|---|---|
|
LUN 的空间分配 |
true |
|
空间预留模式; " 无 " (精简)或 " 卷 " (厚) |
无 |
|
要使用的 Snapshot 策略 |
无 |
|
要为创建的卷分配的 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一 |
" |
|
要为创建的卷分配的自适应 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一。不受 ontap-nas-economy. |
" |
|
为快照预留的卷百分比为 "0" |
条件 |
|
创建克隆时,从其父级拆分该克隆 |
false |
|
在新卷上启用NetApp卷加密(NVE);默认为 |
false |
|
新卷的安全模式 |
"unix" |
|
使用 " 无 " 的分层策略 |
适用于 ONTAP 9.5 SVM-DR 之前的配置的 " 仅快照 " |
unixPermissions |
新卷的模式 |
777. |
snapshotDir |
控制的可见性 |
false |
导出策略 |
要使用的导出策略 |
default |
securityStyle |
新卷的安全模式 |
"unix" |
在 Astra Trident 中使用 QoS 策略组需要 ONTAP 9.8 或更高版本。建议使用非共享 QoS 策略组,并确保策略组分别应用于每个成分卷。共享 QoS 策略组将对所有工作负载的总吞吐量实施上限。 |
下面是定义了默认值的示例:
{ "version": 1, "storageDriverName": "ontap-nas", "backendName": "customBackendName", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "labels": {"k8scluster": "dev1", "backend": "dev1-nasbackend"}, "svm": "trident_svm", "username": "cluster-admin", "password": "password", "limitAggregateUsage": "80%", "limitVolumeSize": "50Gi", "nfsMountOptions": "nfsvers=4", "debugTraceFlags": {"api":false, "method":true}, "defaults": { "spaceReserve": "volume", "qosPolicy": "premium", "exportPolicy": "myk8scluster", "snapshotPolicy": "default", "snapshotReserve": "10" } }
适用于 ontap-nas
和 ontap-nas-flexgroups`现在、Astra Trident会使用新的计算方法来确保FlexVol 的大小与snapshotReserve百分比和PVC相同。当用户请求 PVC 时, Astra Trident 会使用新计算创建具有更多空间的原始 FlexVol 。此计算可确保用户在 PVC 中收到所请求的可写空间,而不是小于所请求的空间。在 v21.07 之前,如果用户请求 PVC (例如, 5GiB ),并且 snapshotReserve 为 50% ,则只会获得 2.5 GiB 的可写空间。这是因为用户请求的是整个卷和 `snapshotReserve
是其中的一个百分比。在Trident 21.07中、用户请求的是可写空间、Astra Trident定义了 snapshotReserve
数字表示整个卷的百分比。这不适用于 ontap-nas-economy
。请参见以下示例以了解其工作原理:
计算方法如下:
Total volume size = (PVC requested size) / (1 - (snapshotReserve percentage) / 100)
对于 snapshotReserve = 50% , PVC 请求 = 5GiB ,卷总大小为 2/.5 = 10GiB ,可用大小为 5GiB ,这是用户在 PVC 请求中请求的大小。。 volume show
命令应显示与以下示例类似的结果:
在升级 Astra Trident 时,先前安装的现有后端将按照上述说明配置卷。对于在升级之前创建的卷,您应调整其卷的大小,以便观察到所做的更改。例如、具有的2 GiB PVC snapshotReserve=50
之前的结果是、卷可提供1 GiB的可写空间。例如,将卷大小调整为 3GiB 可为应用程序在一个 6 GiB 卷上提供 3GiB 的可写空间。
最低配置示例
以下示例显示了将大多数参数保留为默认值的基本配置。这是定义后端的最简单方法。
如果在采用 Trident 的 NetApp ONTAP 上使用 Amazon FSx ,建议为 LIF 指定 DNS 名称,而不是 IP 地址。 |
ontap-nas
具有基于证书的身份验证的驱动程序
这是一个最低后端配置示例。 clientCertificate
, clientPrivateKey
,和 trustedCACertificate
(如果使用可信CA、则可选)将填充 backend.json
和分别采用客户端证书、专用密钥和可信CA证书的base64编码值。
{ "version": 1, "backendName": "DefaultNASBackend", "storageDriverName": "ontap-nas", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.15", "svm": "nfs_svm", "clientCertificate": "ZXR0ZXJwYXB...ICMgJ3BhcGVyc2", "clientPrivateKey": "vciwKIyAgZG...0cnksIGRlc2NyaX", "trustedCACertificate": "zcyBbaG...b3Igb3duIGNsYXNz", "storagePrefix": "myPrefix_" }
ontap-nas
具有自动导出策略的驱动程序
此示例显示了如何指示 Astra Trident 使用动态导出策略自动创建和管理导出策略。此操作对于也是如此 ontap-nas-economy
和 ontap-nas-flexgroup
驱动程序。
{ "version": 1, "storageDriverName": "ontap-nas", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "svm": "svm_nfs", "labels": {"k8scluster": "test-cluster-east-1a", "backend": "test1-nasbackend"}, "autoExportPolicy": true, "autoExportCIDRs": ["10.0.0.0/24"], "username": "admin", "password": "secret", "nfsMountOptions": "nfsvers=4", }
ontap-nas-flexgroup
驱动程序
{ "version": 1, "storageDriverName": "ontap-nas-flexgroup", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "labels": {"k8scluster": "test-cluster-east-1b", "backend": "test1-ontap-cluster"}, "svm": "svm_nfs", "username": "vsadmin", "password": "secret", }
ontap-nas
支持IPv6的驱动程序
{ "version": 1, "storageDriverName": "ontap-nas", "backendName": "nas_ipv6_backend", "managementLIF": "[5c5d:5edf:8f:7657:bef8:109b:1b41:d491]", "labels": {"k8scluster": "test-cluster-east-1a", "backend": "test1-ontap-ipv6"}, "svm": "nas_ipv6_svm", "username": "vsadmin", "password": "netapp123" }
ontap-nas-economy
驱动程序
{ "version": 1, "storageDriverName": "ontap-nas-economy", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "svm": "svm_nfs", "username": "vsadmin", "password": "secret" }
虚拟存储池后端示例
在下面所示的示例后端定义文件中、会为所有存储池设置特定的默认值、例如 spaceReserve
无、 spaceAllocation
为false、和 encryption
为false。虚拟存储池在存储部分中进行定义。
在此示例中、某些存储池会设置自己的存储池 spaceReserve
, spaceAllocation
,和 encryption
值、而某些池会覆盖上述设置的默认值。
ontap-nas
驱动程序
{ { "version": 1, "storageDriverName": "ontap-nas", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "svm": "svm_nfs", "username": "admin", "password": "secret", "nfsMountOptions": "nfsvers=4", "defaults": { "spaceReserve": "none", "encryption": "false", "qosPolicy": "standard" }, "labels":{"store":"nas_store", "k8scluster": "prod-cluster-1"}, "region": "us_east_1", "storage": [ { "labels":{"app":"msoffice", "cost":"100"}, "zone":"us_east_1a", "defaults": { "spaceReserve": "volume", "encryption": "true", "unixPermissions": "0755", "adaptiveQosPolicy": "adaptive-premium" } }, { "labels":{"app":"slack", "cost":"75"}, "zone":"us_east_1b", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0755" } }, { "labels":{"app":"wordpress", "cost":"50"}, "zone":"us_east_1c", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0775" } }, { "labels":{"app":"mysqldb", "cost":"25"}, "zone":"us_east_1d", "defaults": { "spaceReserve": "volume", "encryption": "false", "unixPermissions": "0775" } } ] }
ontap-nas-flexgroup
驱动程序
{ "version": 1, "storageDriverName": "ontap-nas-flexgroup", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "svm": "svm_nfs", "username": "vsadmin", "password": "secret", "defaults": { "spaceReserve": "none", "encryption": "false" }, "labels":{"store":"flexgroup_store", "k8scluster": "prod-cluster-1"}, "region": "us_east_1", "storage": [ { "labels":{"protection":"gold", "creditpoints":"50000"}, "zone":"us_east_1a", "defaults": { "spaceReserve": "volume", "encryption": "true", "unixPermissions": "0755" } }, { "labels":{"protection":"gold", "creditpoints":"30000"}, "zone":"us_east_1b", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0755" } }, { "labels":{"protection":"silver", "creditpoints":"20000"}, "zone":"us_east_1c", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0775" } }, { "labels":{"protection":"bronze", "creditpoints":"10000"}, "zone":"us_east_1d", "defaults": { "spaceReserve": "volume", "encryption": "false", "unixPermissions": "0775" } } ] }
ontap-nas-economy
驱动程序
{ "version": 1, "storageDriverName": "ontap-nas-economy", "managementLIF": "10.0.0.1", "dataLIF": "10.0.0.2", "svm": "svm_nfs", "username": "vsadmin", "password": "secret", "defaults": { "spaceReserve": "none", "encryption": "false" }, "labels":{"store":"nas_economy_store"}, "region": "us_east_1", "storage": [ { "labels":{"department":"finance", "creditpoints":"6000"}, "zone":"us_east_1a", "defaults": { "spaceReserve": "volume", "encryption": "true", "unixPermissions": "0755" } }, { "labels":{"department":"legal", "creditpoints":"5000"}, "zone":"us_east_1b", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0755" } }, { "labels":{"department":"engineering", "creditpoints":"3000"}, "zone":"us_east_1c", "defaults": { "spaceReserve": "none", "encryption": "true", "unixPermissions": "0775" } }, { "labels":{"department":"humanresource", "creditpoints":"2000"}, "zone":"us_east_1d", "defaults": { "spaceReserve": "volume", "encryption": "false", "unixPermissions": "0775" } } ] }
将后端映射到 StorageClasses
以下 StorageClass 定义引用了上述虚拟存储池。使用 parameters.selector
字段中、每个StorageClass都会调用可用于托管卷的虚拟池。卷将在选定虚拟池中定义各个方面。
-
第一个StorageClass (
protection-gold
)将映射到中的第一个、第二个虚拟存储池ontap-nas-flexgroup
中的后端和第一个虚拟存储池ontap-san
后端。这是唯一一个提供黄金级保护的池。 -
第二个StorageClass (
protection-not-gold
)将映射到中的第三个、第四个虚拟存储池ontap-nas-flexgroup
中的后端和第二个、第三个虚拟存储池ontap-san
后端。这些池是唯一提供黄金级以外保护级别的池。 -
第三个StorageClass (
app-mysqldb
)将映射到中的第四个虚拟存储池ontap-nas
中的后端和第三个虚拟存储池ontap-san-economy
后端。这些池是唯一为 mysqldb 类型的应用程序提供存储池配置的池。 -
第四个StorageClass (
protection-silver-creditpoints-20k
)将映射到中的第三个虚拟存储池ontap-nas-flexgroup
中的后端和第二个虚拟存储池ontap-san
后端。这些池是唯一以 20000 个信用点提供黄金级保护的池。 -
第五个StorageClass (
creditpoints-5k
)将映射到中的第二个虚拟存储池ontap-nas-economy
中的后端和第三个虚拟存储池ontap-san
后端。这些是唯一一款具有 5000 个信用点的池产品。
Astra Trident 将决定选择哪个虚拟存储池,并确保满足存储要求。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-gold provisioner: netapp.io/trident parameters: selector: "protection=gold" fsType: "ext4" --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-not-gold provisioner: netapp.io/trident parameters: selector: "protection!=gold" fsType: "ext4" --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: app-mysqldb provisioner: netapp.io/trident parameters: selector: "app=mysqldb" fsType: "ext4" --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-silver-creditpoints-20k provisioner: netapp.io/trident parameters: selector: "protection=silver; creditpoints=20000" fsType: "ext4" --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: creditpoints-5k provisioner: netapp.io/trident parameters: selector: "creditpoints=5000" fsType: "ext4"