ONTAP NAS配置选项和示例
了解如何在Trident安装中创建和使用ONTAP NAS驱动程序。本节提供了将后端映射到StorageClasses的后端配置示例和详细信息。
后端配置选项
有关后端配置选项,请参见下表:
参数 | Description | Default | ||
---|---|---|---|---|
|
始终为 1 |
|||
|
存储驱动程序的名称 |
|
||
|
自定义名称或存储后端 |
驱动程序名称+"_"+ dataLIF |
||
|
集群或SVM管理LIF的IP地址可以指定完全限定域名(FQDN)。如果Trident是使用IPv6标志安装的、则可以设置为使用IPv6地址。IPv6地址必须用方括号定义,例如 |
"10.0.0.1"、"[2001:1234:abc:::fefe]" |
||
|
协议 LIF 的 IP 地址。NetApp建议指定 |
指定的地址或派生自SVM (如果未指定)(不建议) |
||
|
要使用的 Storage Virtual Machine |
如果指定了 SVM |
||
|
启用自动创建和更新导出策略[布尔值]。使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。 |
false |
||
|
用于筛选KubeNet节点IP的CIDR列表(启用时)。 `autoExportPolicy`使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。 |
["0.0.0.0/0、":::/0"]` |
||
|
要应用于卷的一组任意 JSON 格式的标签 |
"" |
||
|
客户端证书的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
客户端专用密钥的 Base64 编码值。用于基于证书的身份验证 |
"" |
||
|
受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证 |
"" |
||
|
用于连接到集群 /SVM 的用户名。用于基于凭据的身份验证 |
|||
|
连接到集群 /SVM 的密码。用于基于凭据的身份验证 |
|||
|
在 SVM 中配置新卷时使用的前缀。设置后无法更新
|
"三级联" |
||
|
要配置的聚合(可选;如果设置了聚合,则必须将其分配给 SVM )。对于 `ontap-nas-flexgroup`驱动程序、此选项将被忽略。如果未分配、则 可以使用任何可用聚合来配置FlexGroup卷。
|
"" |
||
|
如果使用量超过此百分比,则配置失败。不适用于 Amazon FSx for ONTAP。 |
"" (默认情况下不强制实施) |
||
FlexgroupGroupGroupRegateList |
要配置的聚合列表(可选;如果已设置、则必须将其分配给SVM)。分配给SVM的所有聚合均用于配置FlexGroup卷。支持* ONTAP-NAS-FlexGroup-Storage驱动程序。
|
"" |
||
|
如果请求的卷大小超过此值、则配置失败。此外、还会限制它为qtrees管理的卷的大小上限、并且此 `qtreesPerFlexvol`选项允许自定义每个FlexVol volume的qtrees的最大数量 |
""(默认情况下不强制实施) |
||
|
故障排除时要使用的调试标志。例如、{"api":false、"METHO":true} |
空 |
||
|
配置NFS或SMB卷创建。选项包括 |
|
||
|
NFS挂载选项的逗号分隔列表。通常会在存储类中为Kubnetes-永久性 卷指定挂载选项、但如果在存储类中未指定挂载选项、则Trident将回退到使用存储后端配置文件中指定的挂载选项。如果在存储类或配置文件中未指定挂载选项、则Trident不会在关联的永久性卷上设置任何挂载选项。 |
"" |
||
|
每个 FlexVol 的最大 qtree 数,必须在 50 , 300 范围内 |
"200" |
||
|
您可以指定以下选项之一:使用Microsoft管理控制台或ONTAP命令行界面创建的SMB共享的名称;允许Trident创建SMB共享的名称;或者、您可以将参数留空以防止对卷进行通用共享访问。对于内部ONTAP、此参数是可选的。此参数对于Amazon FSx for ONTAP后端为必填项、不能为空。 |
|
||
|
用于使用 ONTAP REST API 的布尔参数。 |
|
||
|
在qtree-NAS ONTAP经济型后端使用qtrees时可请求的最大FlexVol大小。 |
"" (默认情况下不强制实施) |
||
|
限制 `ontap-nas-economy`后端创建新的FlexVol卷以包含其qtrees。仅会使用已有的FlexVol配置新的PV. |
|||
|
具有 SMB 共享完全访问权限的 Active Directory 管理员用户或用户组。使用此参数可为 SMB 共享提供具有完全控制权的管理员权限。 |
用于配置卷的后端配置选项
您可以在中使用这些选项控制默认配置 defaults
配置部分。有关示例,请参见以下配置示例。
参数 | Description | Default |
---|---|---|
|
qtrees的空间分配 |
"正确" |
|
空间预留模式;"无"(精简)或"卷"(厚) |
"无" |
|
要使用的 Snapshot 策略 |
"无" |
|
要为创建的卷分配的 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一 |
"" |
|
要为创建的卷分配的自适应 QoS 策略组。选择每个存储池 / 后端的 qosPolicy 或 adaptiveQosPolicy 之一。不受 ontap-nas-economy. |
"" |
|
为快照预留的卷百分比 |
如果为"0"、则为"0" |
|
创建克隆时,从其父级拆分该克隆 |
false |
|
在新卷上启用NetApp卷加密(NVE);默认为 |
false |
|
使用"无"的层策略 |
|
|
新卷的模式 |
"777"表示NFS卷;空(不适用)表示SMB卷 |
|
控制对的访问 |
对于NFSv4、为"TRUE";对于NFSv3、为"false" |
|
要使用的导出策略 |
default |
|
新卷的安全模式。NFS支持 |
NFS默认值为 |
|
用于创建自定义卷名称的模板。 |
"" |
|
将QoS策略组与Trident结合使用需要使用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
Trident现在使用新的计算方法,以确保FlexVol 的大小与快照预留百分比和 PVC 的百分比相符。当用户请求 PVC 时, Trident会使用新的计算方法创建具有更多空间的原始FlexVol 。此计算方法可确保用户在 PVC 中获得其请求的可写空间,而不是少于其请求的空间。在 v21.07 之前,当用户请求 PVC(例如 5 GiB)时,如果快照预留百分比为 50%,则只能获得 2.5 GiB 的可写空间。这是因为用户请求的是整个卷,并且 snapshotReserve`是其中的百分比。在Trident 21.07 中,用户请求的是可写空间,而Trident定义了 `snapshotReserve`占总体积的百分比。这不适用于 `ontap-nas-economy
。请参阅以下示例了解其工作原理:
计算方法如下:
Total volume size = (PVC requested size) / (1 - (snapshotReserve percentage) / 100)
对于快照预留 = 50% 且 PVC 请求 = 5 GiB 的情况,总卷大小为 5/.5 = 10 GiB,可用大小为 5 GiB,这正是用户在 PVC 请求中请求的大小。 `volume show`命令应显示与此示例类似的结果:

升级Trident时,先前安装的现有后端将按上述方式配置卷。对于升级前创建的卷,您应该调整其大小才能观察到更改。例如,一个 2 GiB 的 PVC 包含 `snapshotReserve=50`之前的结果是卷提供了 1 GiB 的可写空间。例如,将卷大小调整为 3 GiB,将在 6 GiB 的卷上为应用程序提供 3 GiB 的可写空间。
最低配置示例
以下示例显示了将大多数参数保留为默认值的基本配置。这是定义后端的最简单方法。
|
如果在采用 Trident 的 NetApp ONTAP 上使用 Amazon FSx ,建议为 LIF 指定 DNS 名称,而不是 IP 地址。 |
ONTAP NAS经济性示例
---
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
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: password
MetroCluster示例
您可以对后端进行配置、以避免在切换和切回后手动更新后端定义 "SVM复制和恢复"。
要进行无缝切换和切回、请使用指定SVM managementLIF
并省略 dataLIF
和 svm
parameters例如:
---
version: 1
storageDriverName: ontap-nas
managementLIF: 192.168.1.66
username: vsadmin
password: password
SMB卷示例
---
version: 1
backendName: ExampleBackend
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
nasType: smb
securityStyle: ntfs
unixPermissions: ""
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
基于证书的身份验证示例
这是一个最低后端配置示例。 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_
自动导出策略示例
此示例介绍如何指示Trident使用动态导出策略自动创建和管理导出策略。这对于和 ontap-nas-flexgroup`驱动程序是相同的 `ontap-nas-economy
。
---
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: password
nfsMountOptions: nfsvers=4
IPv6地址示例
此示例显示了 managementLIF
使用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: password
Amazon FSx for ONTAP使用SMB卷示例
。 smbShare
使用SMB卷的FSx for ONTAP需要参数。
---
version: 1
backendName: SMBBackend
storageDriverName: ontap-nas
managementLIF: example.mgmt.fqdn.aws.com
nasType: smb
dataLIF: 10.0.0.15
svm: nfs_svm
smbShare: smb-share
clientCertificate: ZXR0ZXJwYXB...ICMgJ3BhcGVyc2
clientPrivateKey: vciwKIyAgZG...0cnksIGRlc2NyaX
trustedCACertificate: zcyBbaG...b3Igb3duIGNsYXNz
storagePrefix: myPrefix_
使用nameTemplate的后端配置示例
---
version: 1
storageDriverName: ontap-nas
backendName: ontap-nas-backend
managementLIF: <ip address>
svm: svm0
username: <admin>
password: <password>
defaults:
nameTemplate: "{{.volume.Name}}_{{.labels.cluster}}_{{.volume.Namespace}}_{{.vo\
lume.RequestName}}"
labels:
cluster: ClusterA
PVC: "{{.volume.Namespace}}_{{.volume.RequestName}}"
虚拟池后端示例
在下面显示的示例后端定义文件中、为所有存储池设置了特定默认值、例如 spaceReserve
无、 spaceAllocation
为false、和 encryption
为false。虚拟池在存储部分中进行定义。
Trident会在"Comments"字段中设置配置标签。注释在FlexVol for或FlexGroup ontap-nas-flexgroup
for上设置 ontap-nas
。配置时、Trident会将虚拟池上的所有标签复制到存储卷。为了方便起见、存储管理员可以按标签为每个虚拟池和组卷定义标签。
在这些示例中、某些存储池会自行设置 spaceReserve
, spaceAllocation
,和 encryption
值、而某些池会覆盖默认值。
ONTAP NAS示例
---
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm_nfs
username: admin
password: <password>
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:
department: legal
creditpoints: "5000"
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
svm: svm_nfs
username: vsadmin
password: <password>
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经济性示例
---
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
svm: svm_nfs
username: vsadmin
password: <password>
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:
protection: bronze
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都会指出可用于托管卷的虚拟池。卷将在选定虚拟池中定义各个方面。
-
。
protection-gold
StorageClass将映射到中的第一个和第二个虚拟池ontap-nas-flexgroup
后端。这些池是唯一提供金牌保护的池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-gold provisioner: csi.trident.netapp.io parameters: selector: "protection=gold" fsType: "ext4"
-
。
protection-not-gold
StorageClass将映射到中的第三个和第四个虚拟池ontap-nas-flexgroup
后端。这些池是唯一提供黄金级以外保护级别的池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-not-gold provisioner: csi.trident.netapp.io parameters: selector: "protection!=gold" fsType: "ext4"
-
。
app-mysqldb
StorageClass将映射到中的第四个虚拟池ontap-nas
后端。这是为mysqldb类型的应用程序提供存储池配置的唯一池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: app-mysqldb provisioner: csi.trident.netapp.io parameters: selector: "app=mysqldb" fsType: "ext4"
-
。
protection-silver-creditpoints-20k
StorageClass将映射到中的第三个虚拟池ontap-nas-flexgroup
后端。这是唯一提供银牌保护和20000个信用点的池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-silver-creditpoints-20k provisioner: csi.trident.netapp.io parameters: selector: "protection=silver; creditpoints=20000" fsType: "ext4"
-
。
creditpoints-5k
StorageClass将映射到中的第三个虚拟池ontap-nas
中的后端和第二个虚拟池ontap-nas-economy
后端。这是唯一一款信用点数为5000的池产品。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: creditpoints-5k provisioner: csi.trident.netapp.io parameters: selector: "creditpoints=5000" fsType: "ext4"
Trident将决定选择哪个虚拟池、并确保满足存储要求。
更新 dataLIF
初始配置后
您可以在初始配置后更改dataLIF、方法是运行以下命令、为新的后端JSON文件提供更新后的dataLIF。
tridentctl update backend <backend-name> -f <path-to-backend-json-file-with-updated-dataLIF>
|
如果一个或多个Pod连接了PVC、则必须先关闭所有相应的Pod、然后再将其重新启动、以使新的dataLIF生效。 |
安全 SMB 示例
使用 ontap-nas 驱动程序的后端配置
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm2
nasType: smb
defaults:
adAdminUser: tridentADtest
credentials:
name: backend-tbc-ontap-invest-secret
使用 ontap-nas-economy 驱动程序的后端配置
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
svm: svm2
nasType: smb
defaults:
adAdminUser: tridentADtest
credentials:
name: backend-tbc-ontap-invest-secret
具有存储池的后端配置
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm0
useREST: false
storage:
- labels:
app: msoffice
defaults:
adAdminUser: tridentADuser
nasType: smb
credentials:
name: backend-tbc-ontap-invest-secret
采用 ontap-nas 驱动程序的存储类示例
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-smb-sc
annotations:
trident.netapp.io/smbShareAdUserPermission: change
trident.netapp.io/smbShareAdUser: tridentADtest
parameters:
backendType: ontap-nas
csi.storage.k8s.io/node-stage-secret-name: smbcreds
csi.storage.k8s.io/node-stage-secret-namespace: trident
trident.netapp.io/nasType: smb
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
|
确保添加 `annotations`启用安全 SMB。如果没有注释,安全 SMB 就无法工作,无论后端或 PVC 中设置了什么配置。 |
采用 ontap-nas-economy 驱动程序的存储类示例
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-smb-sc
annotations:
trident.netapp.io/smbShareAdUserPermission: change
trident.netapp.io/smbShareAdUser: tridentADuser3
parameters:
backendType: ontap-nas-economy
csi.storage.k8s.io/node-stage-secret-name: smbcreds
csi.storage.k8s.io/node-stage-secret-namespace: trident
trident.netapp.io/nasType: smb
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
具有单个 AD 用户的 PVC 示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc4
namespace: trident
annotations:
trident.netapp.io/smbShareAccessControl: |
change:
- tridentADtest
read:
- tridentADuser
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-smb-sc
具有多个 AD 用户的 PVC 示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-test-pvc
annotations:
trident.netapp.io/smbShareAccessControl: |
full_control:
- tridentTestuser
- tridentuser
- tridentTestuser1
- tridentuser1
change:
- tridentADuser
- tridentADuser1
- tridentADuser4
- tridentTestuser2
read:
- tridentTestuser2
- tridentTestuser3
- tridentADuser2
- tridentADuser3
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi