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

Azure NetApp Files后端配置选项和示例

贡献者 netapp-aruldeepa

了解Azure NetApp Files的 NFS 和 SMB 后端配置选项,并查看配置示例。

后端配置选项

Trident使用您的后端配置(子网、虚拟网络、服务级别和位置),在请求的位置中可用的容量池上创建Azure NetApp Files卷,并与请求的服务级别和子网相匹配。

备注 * 从NetApp Trident 25.06 版本开始,手动 QoS 容量池作为技术预览版受到支持。*

Azure NetApp Files后端提供以下配置选项。

参数 描述 默认

version

始终为 1

storageDriverName

存储驱动程序的名称

"azure-netapp-files"

backendName

自定义名称或存储后端

司机姓名 + "_" + 随机字符

subscriptionID

Azure 订阅的订阅 ID(在 AKS 群集上启用托管标识时为可选)。

tenantID

在 AKS 集群上使用托管身份或云身份时,应用程序注册中的租户 ID 是可选的。

clientID

在 AKS 集群上使用托管身份或云身份时,应用程序注册中的客户端 ID 是可选的。

clientSecret

在 AKS 集群上使用托管身份或云身份时,应用程序注册中的客户端密钥是可选的。

serviceLevel

之一 StandardPremium , 或者 Ultra

““ (随机的)

location

将在 Azure 中创建新卷的位置名称(在 AKS 群集上启用托管标识时为可选)。

resourceGroups

用于筛选已发现资源的资源组列表

(无滤镜)

netappAccounts

用于筛选已发现资源的NetApp帐户列表

(无滤镜)

capacityPools

用于筛选已发现资源的容量池列表

(无过滤,随机)

virtualNetwork

具有委派子网的虚拟网络的名称

""

subnet

委派给的子网名称 Microsoft.Netapp/volumes

""

networkFeatures

卷的 VNet 功能集,可能是 Basic`或者 `Standard。网络功能并非在所有地区都可用,可能需要通过订阅才能启用。指定 `networkFeatures`未启用该功能会导致卷配置失败。

""

nfsMountOptions

对 NFS 挂载选项进行精细控制。对于 SMB 卷,此设置将被忽略。要使用 NFS 版本 4.1 挂载卷,请包含以下内容 `nfsvers=4`在以逗号分隔的挂载选项列表中选择 NFS v4.1。存储类定义中设置的挂载选项会覆盖后端配置中设置的挂载选项。

"nfsvers=3"

limitVolumeSize

如果请求的卷大小大于此值,则配置失败。

(默认情况下不强制执行)

debugTraceFlags

故障排除时要使用的调试标志。例子, \{"api": false, "method": true, "discovery": true} 。除非您正在进行故障排除并需要详细的日志转储,否则请勿使用此功能。

无效的

nasType

配置 NFS 或 SMB 卷的创建。选项有 nfs, `smb`或空值。设置为 null 则默认使用 NFS 卷。

nfs

supportedTopologies

表示此后端支持的区域和区域列表。更多信息,请参阅"使用 CSI 拓扑"

qosType

表示 QoS 类型:自动或手动。* Trident 25.06 技术预览版*

自动

maxThroughput

设置允许的最大吞吐量,单位为 MiB/秒。仅支持手动 QoS 容量池。* Trident 25.06 技术预览版*

4 MiB/sec

备注 有关网络功能的更多信息,请参阅"为Azure NetApp Files卷配置网络功能"

所需权限和资源

如果在创建 PVC 时收到“未找到容量池”错误,则可能是您的应用程序注册没有关联的必要权限和资源(子网、虚拟网络、容量池)。如果启用调试功能, Trident将记录在创建后端时发现的 Azure 资源。请确认是否使用了合适的角色。

resourceGroupsnetappAccountscapacityPoolsvirtualNetwork , 和 `subnet`可以使用简称或完全限定名称来指定。大多数情况下建议使用完全限定名称,因为短名称可能会匹配多个同名资源。

resourceGroupsnetappAccounts , 和 `capacityPools`值是过滤器,用于将发现的资源集限制为该存储后端可用的资源,并且可以以任意组合指定。完全限定名称遵循以下格式:

类型 格式

资源组

<资源组>

NetApp账户

<资源组>/<NetApp 帐户>

容量池

<资源组>/<NetApp 帐户>/<容量池>

虚拟网络

<资源组>/<虚拟网络>

子网

<资源组>/<虚拟网络>/<子网>

卷配置

您可以通过在配置文件的特定部分中指定以下选项来控制默认卷配置。参考 示例配置 了解详情。

参数 描述 默认

exportRule

新卷的出口规则。
`exportRule`必须是以逗号分隔的 IPv4 地址或 IPv4 子网的任意组合列表,采用 CIDR 表示法。对于 SMB 卷,此设置将被忽略。

“0.0.0.0/0”

snapshotDir

控制 .snapshot 目录的可见性

NFSv4 为“true”,NFSv3 为“false”。

size

新卷的默认大小

100G

unixPermissions

新卷的 Unix 权限(4 位八进制数字)。对于 SMB 卷,此设置将被忽略。

(预览功能,需订阅并加入白名单)

示例配置

以下示例展示了基本配置,其中大多数参数都保留默认值。这是定义后端最简单的方法。

最小配置

这是最基本的后端配置。通过此配置, Trident会发现配置位置中所有委派给Azure NetApp Files存储的NetApp帐户、容量池和子网,并将新卷随机放置在其中一个池和子网上。因为 `nasType`省略了 `nfs`默认设置生效,后端将为 NFS 卷进行配置。

如果您刚开始使用Azure NetApp Files并进行尝试,此配置是理想的选择,但在实践中,您需要为预配的卷提供额外的范围。

---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-anf-1
  namespace: trident
spec:
  version: 1
  storageDriverName: azure-netapp-files
  subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
  tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
  clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
  clientSecret: SECRET
  location: eastus
为 AKS 管理身份

此后端配置省略了 subscriptionIDtenantIDclientID , 和 `clientSecret`在使用托管身份时,这些是可选的。

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-anf-1
  namespace: trident
spec:
  version: 1
  storageDriverName: azure-netapp-files
  capacityPools:
    - ultra-pool
  resourceGroups:
    - aks-ami-eastus-rg
  netappAccounts:
    - smb-na
  virtualNetwork: eastus-prod-vnet
  subnet: eastus-anf-subnet
AKS 的云身份

此后端配置省略了 tenantIDclientID , 和 `clientSecret`在使用云身份时,这些是可选的。

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-anf-1
  namespace: trident
spec:
  version: 1
  storageDriverName: azure-netapp-files
  capacityPools:
    - ultra-pool
  resourceGroups:
    - aks-ami-eastus-rg
  netappAccounts:
    - smb-na
  virtualNetwork: eastus-prod-vnet
  subnet: eastus-anf-subnet
  location: eastus
  subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
具有容量池过滤器的特定服务级别配置

此后端配置将卷放置在 Azure 中 `eastus`位置 `Ultra`容量池。 Trident会自动发现该位置中委派给Azure NetApp Files的所有子网,并随机在其中一个子网上放置一个新卷。

---
version: 1
storageDriverName: azure-netapp-files
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: eastus
serviceLevel: Ultra
capacityPools:
  - application-group-1/account-1/ultra-1
  - application-group-1/account-1/ultra-2
具有手动 QoS 容量池的后端示例

此后端配置将卷放置在 Azure 中 `eastus`具有手动 QoS 容量池的位置。* NetApp Trident 25.06 中的技术预览*。

---
version: 1
storageDriverName: azure-netapp-files
backendName: anf1
location: eastus
labels:
  clusterName: test-cluster-1
  cloud: anf
  nasType: nfs
defaults:
  qosType: Manual
storage:
  - serviceLevel: Ultra
    labels:
      performance: gold
    defaults:
      maxThroughput: 10
  - serviceLevel: Premium
    labels:
      performance: silver
    defaults:
      maxThroughput: 5
  - serviceLevel: Standard
    labels:
      performance: bronze
    defaults:
      maxThroughput: 3
高级配置

此后端配置进一步缩小了卷放置范围到单个子网,并且还修改了一些卷配置默认值。

---
version: 1
storageDriverName: azure-netapp-files
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: eastus
serviceLevel: Ultra
capacityPools:
  - application-group-1/account-1/ultra-1
  - application-group-1/account-1/ultra-2
virtualNetwork: my-virtual-network
subnet: my-subnet
networkFeatures: Standard
nfsMountOptions: vers=3,proto=tcp,timeo=600
limitVolumeSize: 500Gi
defaults:
  exportRule: 10.0.0.0/24,10.0.1.0/24,10.0.2.100
  snapshotDir: "true"
  size: 200Gi
  unixPermissions: "0777"
虚拟池配置

此后端配置在单个文件中定义了多个存储池。当您有多个容量池支持不同的服务级别,并且想要在 Kubernetes 中创建代表这些级别的存储类时,这将非常有用。虚拟池标签用于根据以下因素区分池子: performance

---
version: 1
storageDriverName: azure-netapp-files
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: eastus
resourceGroups:
  - application-group-1
networkFeatures: Basic
nfsMountOptions: vers=3,proto=tcp,timeo=600
labels:
  cloud: azure
storage:
  - labels:
      performance: gold
    serviceLevel: Ultra
    capacityPools:
      - ultra-1
      - ultra-2
    networkFeatures: Standard
  - labels:
      performance: silver
    serviceLevel: Premium
    capacityPools:
      - premium-1
  - labels:
      performance: bronze
    serviceLevel: Standard
    capacityPools:
      - standard-1
      - standard-2
支持的拓扑配置

Trident可根据区域和可用区为工作负载提供卷。这 `supportedTopologies`此后端配置中的块用于提供每个后端的区域和区域列表。此处指定的区域和区域值必须与每个 Kubernetes 集群节点上的标签中的区域和区域值相匹配。这些区域和分区代表存储类中可以提供的允许值的列表。对于包含后端提供的区域和可用区子集的存储类, Trident会在所述区域和可用区中创建卷。更多信息,请参阅"使用 CSI 拓扑"

---
version: 1
storageDriverName: azure-netapp-files
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: eastus
serviceLevel: Ultra
capacityPools:
  - application-group-1/account-1/ultra-1
  - application-group-1/account-1/ultra-2
supportedTopologies:
  - topology.kubernetes.io/region: eastus
    topology.kubernetes.io/zone: eastus-1
  - topology.kubernetes.io/region: eastus
    topology.kubernetes.io/zone: eastus-2

存储类定义

下列 `StorageClass`上述定义指的是存储池。

使用示例定义 `parameter.selector`场地

使用 `parameter.selector`你可以为每个对象指定。 `StorageClass`用于托管卷的虚拟池。该卷将具有所选池中定义的方面。

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
provisioner: csi.trident.netapp.io
parameters:
  selector: performance=gold
allowVolumeExpansion: true

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: silver
provisioner: csi.trident.netapp.io
parameters:
  selector: performance=silver
allowVolumeExpansion: true

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: bronze
provisioner: csi.trident.netapp.io
parameters:
  selector: performance=bronze
allowVolumeExpansion: true

SMB卷的示例定义

使用 nasTypenode-stage-secret-name , 和 `node-stage-secret-namespace`您可以指定 SMB 卷并提供所需的 Active Directory 凭据。

默认命名空间上的基本配置
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: anf-sc-smb
provisioner: csi.trident.netapp.io
parameters:
  backendType: "azure-netapp-files"
  trident.netapp.io/nasType: "smb"
  csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
  csi.storage.k8s.io/node-stage-secret-namespace: "default"
每个命名空间使用不同的密钥
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: anf-sc-smb
provisioner: csi.trident.netapp.io
parameters:
  backendType: "azure-netapp-files"
  trident.netapp.io/nasType: "smb"
  csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
  csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
每个卷使用不同的密钥
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: anf-sc-smb
provisioner: csi.trident.netapp.io
parameters:
  backendType: "azure-netapp-files"
  trident.netapp.io/nasType: "smb"
  csi.storage.k8s.io/node-stage-secret-name: ${pvc.name}
  csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
备注 `nasType: smb`筛选支持 SMB 卷的存储池。 `nasType: nfs`或者 `nasType: null`NFS池过滤器。

创建后端

创建后端配置文件后,运行以下命令:

tridentctl create backend -f <backend-file>

如果后端创建失败,则后端配置存在问题。您可以通过运行以下命令查看日志以确定原因:

tridentctl logs

在您发现并纠正配置文件中的问题后,您可以再次运行创建命令。