Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

配置存储类

贡献者 netapp-aruldeepa kcantrel
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

fsxFilesystemID

是的。

string

FSx for NetApp ONTAP 文件系统 ID

storageDriverName

是的。

string

Trident 存储驱动程序(例如, ontap-nasontap-san

credentialsName

是的。

string

包含 FSx for ONTAP 凭据的 Kubernetes Secret 的名称

指定可选参数

您可以通过 StorageClass 传递可选的后端参数。在 StorageClass parameters 部分中将所有可选值定义为字符串。有关后端参数的完整列表,请参阅:FSx for NetApp ONTAP 后端配置

示例 StorageClass 配置文件。

以下示例显示了触发自动后端配置的 StorageClass。

YAML
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
JSON
{
  "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

trident.netapp.io/configuratorStatus

配置结果 (SuccessFailure)

trident.netapp.io/configuratorMessage

详细状态或错误消息

trident.netapp.io/configuratorName

内部配置器资源的名称

trident.netapp.io/managed

表示 StorageClass 由 Trident 管理

trident.netapp.io/additionalStoragePools

为此后端创建的存储池

要验证状态,请运行:

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:

YAML
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
JSON
{
  "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

ontap-san

每个配置的 PV 都是其自己的 Amazon FSx for NetApp ONTAP 卷中的一个 LUN。推荐用于块存储。

ontap-NAS

配置的每个 PV 都是完整的 Amazon FSx for NetApp ONTAP 卷。推荐用于 NFS 和 SMB。

ontap-san-economy.

每个配置的 PV 都是一个 LUN,每个 Amazon FSx for NetApp ONTAP 卷具有可配置数量的 LUN。

ontap-nas-economy.

配置的每个 PV 都是一个 qtree,每个 Amazon FSx for NetApp ONTAP 卷具有可配置数量的 qtree。

ontap-nas-flexgroup

每个已配置的 PV 都是一个完整的 Amazon FSx for NetApp ONTAP FlexGroup 卷。

有关驱动程序详细信息、请参见 "NAS驱动程序""SAN驱动程序"

创建后端

创建配置文件后,运行以下命令以创建和验证 Trident 后端配置 (TBC):

  • 从YAML文件创建Trident后端配置(TBC)并运行以下命令:

    kubectl create -f backendconfig.yaml -n trident
    tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
  • 验证是否已成功创建Trident后端配置(TBC):

    Kubectl get tbc -n trident
    NAME                         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 中创建它。

步骤
  1. 这是一个Kubbernetes对象、因此请使用 kubectl 以在Kubernetes中创建。

    kubectl create -f storage-class-ontapnas.yaml
  2. 现在,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 示例

ve版本

始终为 1

storageDriverName

存储驱动程序的名称

ontap-nasontap-nas-economyontap-nas-flexgroupontap-sanontap-san-economy

backendName

自定义名称或存储后端

驱动程序名称+"_"+ dataLIF

m年 月 日

集群或SVM管理LIF的IP地址可以指定完全限定域名(FQDN)。如果Trident是使用IPv6标志安装的、则可以设置为使用IPv6地址。IPv6地址必须用方括号定义、例如:[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果在字段下 aws`提供 `fsxFilesystemID、则无需提供、 managementLIF`因为Trident会从AWS检索SVM `managementLIF`信息。因此、您必须提供SVM下某个用户的凭据(例如vsadmin)、并且该用户必须具有此 `vsadmin 角色。

"10.0.0.1"、"[2001:1234:abc:::fefe]"

dataLIF

协议 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]。

autosExportPolicy

启用自动创建和更新导出策略[布尔值]。使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。

false

autosExportCIDR

用于筛选KubeNet节点IP的CIDR列表(启用时)。 `autoExportPolicy`使用 `autoExportPolicy`和 `autoExportCIDRs`选项、Trident可以自动管理导出策略。

"["0.0.0.0/0、":::/0"]"

标签

要应用于卷的一组任意 JSON 格式的标签

""

客户端证书

客户端证书的 Base64 编码值。用于基于证书的身份验证

""

clientPrivateKey

客户端专用密钥的 Base64 编码值。用于基于证书的身份验证

""

trustedCACertifate

受信任 CA 证书的 Base64 编码值。可选。用于基于证书的身份验证。

""

用户名

用于连接到集群或SVM的用户名。用于基于凭据的身份验证。例如、vsadmin。

密码

用于连接到集群或SVM的密码。用于基于凭据的身份验证。

sVM

要使用的 Storage Virtual Machine

如果指定SVM管理LIF则派生。

s存储前缀

在 SVM 中配置新卷时使用的前缀。创建后无法修改。要更新此参数、您需要创建一个新的后端。

trident

limitAggregateUsage

*请勿指定Amazon FSx for NetApp ONTAP。*提供的和 `vsadmin`不包含使用Trident检索聚合使用情况并对其进行限制所需的 `fsxadmin`权限。

请勿使用。

limitVolumeSize

如果请求的卷大小超过此值、则配置失败。此外、还会限制它为qtrees和FlexVol volume管理的卷的大小上限、并且此选项允许自定义每个LUN `qtreesPerFlexvol`的qtrees的最大数量

"" (默认情况下不强制实施)

lunsPerFlexvol

每个FlexVol volume的最大LUN数必须在[50、200]范围内。仅SAN。

“100”

debugTraceFlags

故障排除时要使用的调试标志。例如、{"api":false、"METHO":true}

请勿使用 debugTraceFlags 除非您正在进行故障排除并需要详细的日志转储。

nfsMountOptions

NFS挂载选项的逗号分隔列表。通常会在存储类中为Kubnetes-永久性 卷指定挂载选项、但如果在存储类中未指定挂载选项、则Trident将回退到使用存储后端配置文件中指定的挂载选项。如果在存储类或配置文件中未指定挂载选项、则Trident不会在关联的永久性卷上设置任何挂载选项。

""

nasType

配置NFS或SMB卷创建。选项包括 nfssmb`或为空。*必须设置为 `smb 对于SMB卷。*如果设置为空、则默认为NFS卷。

nfs

qtreesPerFlexvol

每个FlexVol volume的最大qtrees数、必须在[50、300]范围内

"200"

smbShare

您可以指定以下选项之一:使用Microsoft管理控制台或ONTAP命令行界面创建的SMB共享的名称、或者允许Trident创建SMB共享的名称。对于Amazon FSx for ONTAP后端、此参数是必需的。

smb-share

useREST

用于使用 ONTAP REST API 的布尔参数。如果设置为 true,则Trident将使用ONTAP REST API与后端进行通信。此功能需要使用ONTAP 9.11.1及更高版本。此外、使用的ONTAP登录角色必须有权访问 ontap 应用程序。预定义的和角色可以满足这一 vsadmin 要求 cluster-admin

false

aws

您可以在AWS FSx for ONTAP的配置文件中指定以下内容:
- fsxFilesystemID:指定AWS FSx文件系统的ID。
- apiRegion:AWS API区域名称。
- apikey:AWS API密钥。
- secretKey:AWS机密密钥。





""
""
""

credentials

指定要存储在AWS密码管理器中的FSx SVM凭据。- name:密钥的Amazon资源名称(ARN)、其中包含SVM的凭据。- type:设置为 awsarn。有关详细信息、请参见 "创建AWS机密管理器密钥"

用于配置卷的后端配置选项

您可以在中使用这些选项控制默认配置 defaults 配置部分。有关示例,请参见以下配置示例。

参数 Description Default

spaceAllocation

LUN 的空间分配

true

s页面预留

空间预留模式;"无"(精简)或"卷"(厚)

sSnapshot 策略

要使用的 Snapshot 策略

qosPolicy

要为创建的卷分配的 QoS 策略组。选择每个存储池或后端的qosPolicy或adaptiveQosPolicy之一。将QoS策略组与Trident结合使用需要使用ONTAP 9™8或更高版本。您应使用非共享QoS策略组、并确保此策略组分别应用于每个成分卷。共享QoS策略组会对所有工作负载的总吞吐量实施上限。

""

adaptiveQosPolicy

要为创建的卷分配的自适应 QoS 策略组。选择每个存储池或后端的qosPolicy或adaptiveQosPolicy之一。不受 ontap-nas-economy.

""

sSnapshot 预留

为快照"0"预留的卷百分比

如果 snapshotPolicy`为 `noneelse“”

splitOnClone

创建克隆时,从其父级拆分该克隆

false

加密

在新卷上启用NetApp卷加密(NVE);默认为 false。要使用此选项,必须在集群上获得 NVE 的许可并启用 NVE 。如果在后端启用了NAE、则在Trident中配置的任何卷都将启用NAE。有关详细信息,请参阅:"Trident如何与NVE和NAE配合使用"

false

luksEncryption

启用LUKS加密。请参见 "使用Linux统一密钥设置(LUKS)"。仅限SAN。

""

分层策略

要使用的层策略 none

unixPermissions

新卷的模式。对于SMB卷保留为空。

""

securityStyle

新卷的安全模式。NFS支持 mixedunix 安全模式。SMB支持 mixedntfs 安全模式。

NFS默认值为 unix。SMB默认值为 ntfs