配置存储类
https://kubernetes.io/docs/concepts/storage/storage-classes/["Kubnetes StorageClass对象"^] 标识置备程序并指示置备程序如何置备卷。本节将向您展示如何配置将 Trident 指定为置备程序的 Kubernetes StorageClass 对象。
创建 StorageClass 对象
当您为 FSx for ONTAP 创建 StorageClass 时,Trident 将自动创建后端配置。
|
|
如果要手动配置存储后端,请参阅 [create-a-kubernetes-storageclass-without-automatic-backend-configuration] 部分了解如何分别创建 Trident 后端和存储类。 |
指定所需 StorageClass 参数
创建 StorageClass 时需要定义以下三个参数:
| 参数 | Required | Type | Description |
|---|---|---|---|
|
是的。 |
string |
FSx for NetApp ONTAP 文件系统 ID |
|
是的。 |
string |
Trident 存储驱动程序(例如, |
|
是的。 |
string |
包含 FSx for ONTAP 凭据的 Kubernetes Secret 的名称 |
指定可选参数
您可以通过 StorageClass 传递可选的后端参数。在 StorageClass parameters 部分中将所有可选值定义为字符串。有关后端参数的完整列表,请参阅:FSx for NetApp ONTAP 后端配置。
示例 StorageClass 配置文件。
以下示例显示了触发自动后端配置的 StorageClass。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-fsx-demo
annotations:
description: "Demo StorageClass for FSx for NetApp ONTAP"
provisioner: csi.trident.netapp.io
parameters:
fsxFilesystemID: "fs-0abc123"
storageDriverName: "ontap-nas"
credentialsName: trident-fsx-credentials
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
{
"apiVersion": "storage.k8s.io/v1",
"kind": "StorageClass",
"metadata": {
"name": "ontap-fsx-demo",
"annotations": {
"description": "Demo StorageClass for FSx for NetApp ONTAP"
}
},
"provisioner": "csi.trident.netapp.io",
"parameters": {
"fsxFilesystemID": "fs-0abc123",
"storageDriverName": "ontap-nas",
"credentialsName": "trident-fsx-credentials"
},
"allowVolumeExpansion": true,
"reclaimPolicy": "Delete",
"volumeBindingMode": "Immediate"
}
创建 StorageClass
创建配置文件后,请运行以下命令来创建存储类。
kubectl create -f storage-class-ontapnas.yaml
现在,Kubernetes和Trident中都应显示一个*BASIC-Csi*存储类,并且Trident应已发现后端的池。
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
应用 StorageClass 后,Trident 会自动创建后端。然后,您可以创建引用此 StorageClass 的 PersistentVolumeClaims。
验证后端配置状态
Trident 在 StorageClass 注释中记录后端创建的结果。
| 标注 | Description |
|---|---|
|
配置结果 ( |
|
详细状态或错误消息 |
|
内部配置器资源的名称 |
|
表示 StorageClass 由 Trident 管理 |
|
为此后端创建的存储池 |
要验证状态,请运行:
kubectl get storageclass ontap-fsx-demo -o yaml
确认 trident.netapp.io/configuratorStatus`已设置为 `Success。如果值为 Failure,请检查 `trident.netapp.io/configuratorMessage`以了解错误。
添加其他 FSxN 文件系统
如果在继续使用相同的 StorageClass 的同时需要额外的存储容量,请添加其他 FSxN 文件系统 ID。
编辑 StorageClass 并添加以下注释:
metadata:
annotations:
trident.netapp.io/additionalFsxNFileSystemID: '["fs-xxxxxxxxxxxxxxxxxx"]'
应用更改后,Trident 更新后端配置并更新 StorageClass 注释。
操作注意事项和限制
-
删除具有自动后端配置的 StorageClass 通常会删除关联的 Trident 后端。这可能会中断存储连接并中断正在运行的工作负载。在删除托管的 StorageClass 之前,请验证影响。
-
只有适用于 NetApp ONTAP 的 AWS FSx 才支持自动后端配置。
创建没有自动后端配置的 Kubernetes StorageClass
如果要单独创建 Trident 后端和 StorageClass,请按照以下步骤操作。
了解自动后端配置的工作原理
Trident 从 StorageClass 定义中导出后端配置。当您应用 StorageClass 时,Trident 验证所需的参数,创建后端,并使用状态注释 StorageClass。
Trident 只创建一次 VolumeSnapshotClass。Trident 会为后续的 StorageClasses 重复使用同一个 VolumeSnapshotClass。
创建 Trident 后端
要创建 Trident 后端,需要创建 JSON 或 YAML 格式的配置文件。文件需要指定所需的存储类型(NAS 或 SAN)、文件系统和获取该文件的 SVM 以及使用该文件进行身份验证的方式。以下示例演示如何定义基于 NAS 的存储并使用 AWS 密钥将凭据存储到要使用的 SVM:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
backendName: tbc-ontap-nas
svm: svm-name
aws:
fsxFilesystemID: fs-xxxxxxxxxx
credentials:
name: "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name"
type: awsarn
{
"apiVersion": "trident.netapp.io/v1",
"kind": "TridentBackendConfig",
"metadata": {
"name": "backend-tbc-ontap-nas"
"namespace": "trident"
},
"spec": {
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "tbc-ontap-nas",
"svm": "svm-name",
"aws": {
"fsxFilesystemID": "fs-xxxxxxxxxx"
},
"managementLIF": null,
"credentials": {
"name": "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name",
"type": "awsarn"
}
}
}
FSx for ONTAP驱动程序详细信息
您可以使用以下驱动程序将Trident与Amazon FSx for NetApp ONTAP集成:
| 驱动程序名称 | Description |
|---|---|
|
每个配置的 PV 都是其自己的 Amazon FSx for NetApp ONTAP 卷中的一个 LUN。推荐用于块存储。 |
|
配置的每个 PV 都是完整的 Amazon FSx for NetApp ONTAP 卷。推荐用于 NFS 和 SMB。 |
|
每个配置的 PV 都是一个 LUN,每个 Amazon FSx for NetApp ONTAP 卷具有可配置数量的 LUN。 |
|
配置的每个 PV 都是一个 qtree,每个 Amazon FSx for NetApp ONTAP 卷具有可配置数量的 qtree。 |
|
每个已配置的 PV 都是一个完整的 Amazon FSx for NetApp ONTAP FlexGroup 卷。 |
创建后端
创建配置文件后,运行以下命令以创建和验证 Trident 后端配置 (TBC):
-
从YAML文件创建Trident后端配置(TBC)并运行以下命令:
kubectl create -f backendconfig.yaml -n tridenttridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
-
验证是否已成功创建Trident后端配置(TBC):
Kubectl get tbc -n tridentNAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-nas tbc-ontap-nas 933e0071-66ce-4324-b9ff-f96d916ac5e9 Bound Success
有关其他配置选项的详细信息,请参见以下 [Backend-advanced-configuration-and-examples] 部分。
配置存储类*无*自动后端配置
以下是与 Trident 和 FSx for ONTAP 配合使用的存储类配置示例。
NFS 存储类
您可以使用此示例为使用 NFS 的卷设置 StorageClass(有关属性的完整列表,请参阅下面的 Trident 属性部分):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
provisioningType: "thin"
snapshots: "true"
适用于 iSCSI 的 Storage Class
使用此示例为使用 iSCSI 的卷设置 StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
provisioningType: "thin"
snapshots: "true"
使用 NFSv3 和 AWS Bottlerocket 的存储类
要在AWS Bottler套 件上配置NFS3卷、请将所需添加 `mountOptions`到存储类:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
mountOptions:
- nfsvers=3
- nolock
Trident StorageClass 属性
这些参数决定了应使用哪些 Trident 管理的存储池来配置给定类型的卷。
| 属性 | Type | 值 | 优惠 | 请求 | 支持 |
|---|---|---|---|---|---|
介质1 |
string |
HDD ,混合, SSD |
Pool 包含此类型的介质;混合表示两者 |
指定的介质类型 |
ontap-nas , ontap-nas-economy. ontap-nas-flexgroup , ontap-san , solidfire-san |
配置类型 |
string |
精简,厚 |
Pool 支持此配置方法 |
指定的配置方法 |
Thick:All ONTAP ;Thin:All ONTAP & solidfire-san |
后端类型 |
string |
ontap-nas、ontap-nas-economy、ontap-nas-flexgroup、ontap-san、solidfire-san、azure-netapp-files、ontap-san-economy |
池属于此类型的后端 |
指定后端 |
所有驱动程序 |
snapshots |
池 |
true false |
Pool 支持具有快照的卷 |
启用了快照的卷 |
ontap-nas、ontap-san、solidfire-san |
克隆 |
池 |
true false |
Pool 支持克隆卷 |
启用了克隆的卷 |
ontap-nas、ontap-san、solidfire-san |
加密 |
池 |
true false |
池支持加密卷 |
已启用加密的卷 |
ontap-nas , ontap-nas-economy-、 ontap-nas-flexgroups , ontap-san |
IOPS |
内部 |
正整数 |
Pool 能够保证此范围内的 IOPS |
卷保证这些 IOPS |
solidfire-san |
1:ONTAP Select 或 FSx for ONTAP 系统不支持
有关存储类如何与和参数交互以控制Trident如何配置卷的详细信息 PersistentVolumeClaim、请参见"Kubernetes 和 Trident 对象"。
创建存储类
配置 StorageClass 后,您可以在 Kubernetes 中创建它。
-
这是一个Kubbernetes对象、因此请使用
kubectl以在Kubernetes中创建。kubectl create -f storage-class-ontapnas.yaml -
现在,Kubernetes和Trident中都应显示一个*BASIC-Csi*存储类,并且Trident应已发现后端的池。
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
提供 SMB 卷
您可以使用 ontap-nas 驱动程序配置 SMB 卷。但是,要执行此操作,您必须完成以下步骤:"准备配置SMB卷"。
后端高级配置和示例
有关后端配置选项,请参见下表:
| 参数 | Description | 示例 |
|---|---|---|
|
始终为 1 |
|
|
存储驱动程序的名称 |
|
|
自定义名称或存储后端 |
驱动程序名称+"_"+ dataLIF |
|
集群或SVM管理LIF的IP地址可以指定完全限定域名(FQDN)。如果Trident是使用IPv6标志安装的、则可以设置为使用IPv6地址。IPv6地址必须用方括号定义、例如:[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果在字段下 |
"10.0.0.1"、"[2001:1234:abc:::fefe]" |
|
协议 LIF 的 IP 地址。ONTAP NAS 驱动程序:NetApp 建议指定 dataLIF。如果未提供,Trident 会从 SVM 获取 dataLIF。您可以指定要用于 NFS 挂载操作的完全限定域名 (FQDN),允许您创建轮询 DNS 以跨多个 dataLIF 进行负载平衡。可以在初始设置后更改。ONTAP SAN 驱动程序:不要为 iSCSI 指定。Trident 使用 ONTAP Selective LUN Map 来发现建立多路径会话所需的 iSCI LIF。如果明确定义了 dataLIF,则会生成警告。如果 Trident 是使用 IPv6 标志安装的,则可以设置为使用 IPv6 地址。IPv6 地址必须用方括号括起来,例如 [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。 |
|
|
启用自动创建和更新导出策略[布尔值]。使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。 |
|
|
用于筛选KubeNet节点IP的CIDR列表(启用时)。 `autoExportPolicy`使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。 |
"["0.0.0.0/0、":::/0"]" |
|
要应用于卷的一组任意 JSON 格式的标签 |
"" |
|
客户端证书的 Base64 编码值。用于基于证书的身份验证 |
"" |
|
客户端专用密钥的 Base64 编码值。用于基于证书的身份验证 |
"" |
|
受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证。 |
"" |
|
用于连接到集群或SVM的用户名。用于基于凭据的身份验证。例如、vsadmin。 |
|
|
用于连接到集群或SVM的密码。用于基于凭据的身份验证。 |
|
|
要使用的 Storage Virtual Machine |
如果指定SVM管理LIF则派生。 |
|
在 SVM 中配置新卷时使用的前缀。创建后无法修改。要更新此参数、您需要创建一个新的后端。 |
|
|
*请勿指定Amazon FSx for NetApp ONTAP。*提供的和 `vsadmin`不包含使用Trident检索聚合使用情况并对其进行限制所需的 `fsxadmin`权限。 |
请勿使用。 |
|
如果请求的卷大小超过此值、则配置失败。此外、还会限制它为qtrees和FlexVol volume管理的卷的大小上限、并且此选项允许自定义每个LUN `qtreesPerFlexvol`的qtrees的最大数量 |
"" (默认情况下不强制实施) |
|
每个FlexVol volume的最大LUN数必须在[50、200]范围内。仅SAN。 |
“100” |
|
故障排除时要使用的调试标志。例如、{"api":false、"METHO":true} |
空 |
|
NFS挂载选项的逗号分隔列表。通常会在存储类中为Kubnetes-永久性 卷指定挂载选项、但如果在存储类中未指定挂载选项、则Trident将回退到使用存储后端配置文件中指定的挂载选项。如果在存储类或配置文件中未指定挂载选项、则Trident不会在关联的永久性卷上设置任何挂载选项。 |
"" |
|
配置NFS或SMB卷创建。选项包括 |
|
|
每个FlexVol volume的最大qtrees数、必须在[50、300]范围内 |
|
|
您可以指定以下选项之一:使用Microsoft管理控制台或ONTAP命令行界面创建的SMB共享的名称、或者允许Trident创建SMB共享的名称。对于Amazon FSx for ONTAP后端、此参数是必需的。 |
|
|
用于使用 ONTAP REST API 的布尔参数。如果设置为 |
|
|
您可以在AWS FSx for ONTAP的配置文件中指定以下内容: |
|
|
指定要存储在AWS密码管理器中的FSx SVM凭据。- |
用于配置卷的后端配置选项
您可以在中使用这些选项控制默认配置 defaults 配置部分。有关示例,请参见以下配置示例。
| 参数 | Description | Default |
|---|---|---|
|
LUN 的空间分配 |
|
|
空间预留模式;"无"(精简)或"卷"(厚) |
|
|
要使用的 Snapshot 策略 |
|
|
要为创建的卷分配的 QoS 策略组。选择每个存储池或后端的qosPolicy或adaptiveQosPolicy之一。将QoS策略组与Trident结合使用需要使用ONTAP 9™8或更高版本。您应使用非共享QoS策略组、并确保此策略组分别应用于每个成分卷。共享QoS策略组会对所有工作负载的总吞吐量实施上限。 |
"" |
|
要为创建的卷分配的自适应 QoS 策略组。选择每个存储池或后端的qosPolicy或adaptiveQosPolicy之一。不受 ontap-nas-economy. |
"" |
|
为快照"0"预留的卷百分比 |
如果 |
|
创建克隆时,从其父级拆分该克隆 |
|
|
在新卷上启用NetApp卷加密(NVE);默认为 |
|
|
启用LUKS加密。请参见 "使用Linux统一密钥设置(LUKS)"。仅限SAN。 |
"" |
|
要使用的层策略 |
|
|
新卷的模式。对于SMB卷保留为空。 |
"" |
|
新卷的安全模式。NFS支持 |
NFS默认值为 |