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

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

贡献者 netapp-aruldeepa juliantap joan-ing netapp-mwallis

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

后端配置选项

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

Azure NetApp Files后端提供了这些配置选项。

参数 Description Default

ve版本

后端配置版本。

始终为 1

storageDriverName

存储驱动程序的名称

"Azure-netapp-files"

backendName

存储后端的自定义名称

驱动程序名称 + "_" + 随机字符

ssubscriptionID 。

Azure 订阅中的订阅 ID

如果在AKS集群上启用了受管标识、则为可选。

租户 ID 。

应用程序注册中的租户 ID

如果在AKS集群上使用托管身份或云身份、则可选。

客户端 ID 。

应用程序注册中的客户端 ID

如果在AKS集群上使用托管身份或云身份、则可选。

clientSecret 。

应用程序注册中的客户端密钥

如果在AKS集群上使用托管身份或云身份、则可选。

s服务级别

S标准 , 高级 或 超级 之一

"" (随机)

位置

要创建新卷的 Azure 位置的名称

如果在AKS集群上启用了受管标识、则为可选。

resourceGroups

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

"[]" (无筛选器)

netappAccounts

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

"[]" (无筛选器)

容量池

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

"[]" (无筛选器,随机)

virtualNetwork

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

""

ssubnet

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

""

网络功能

卷的 VNet 功能集,可以是 Basic`或 `Standard。并非所有地区都提供 Network Features,可能必须在订阅中启用。在未启用此功能时指定 `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 或为空。默认情况下、将设置为空会将NFS卷设置为空。

nfs

supportedTopologies

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

qosType

表示 QoS 类型:自动或手动。

自动

maxThroughput

设置允许的最大吞吐量,单位为 MiB/秒。仅支持手动 QoS 容量池。

4 MiB/sec

备注 有关网络功能的详细信息、请参见 "配置Azure NetApp Files 卷的网络功能"。

考虑 Azure 云环境(26.06)

从 26.06 版本开始,Trident 支持在多个 Azure 云环境中创建和管理 Azure NetApp Files 后端。

支持的 Azure 云包括:

  • Azure 商业版

  • Azure Government(Azure Government / MAG)

部署 Trident 或创建 Azure NetApp Files 后端时,请确保 Azure Resource Manager 和身份验证终结点与 Azure 云环境匹配。如果端点不匹配, `tridentctl`无法进行身份验证,并且后端创建失败。

所需权限和资源

如果在创建 PVC 时收到"未找到容量池"错误,则您的应用注册可能没有关联所需的权限和资源(子网、虚拟网络、容量池)。如果启用调试,Trident 会记录创建后端时发现的 Azure 资源。验证是否正在使用适当的角色。

`resourceGroups`、 `netappAccounts`、 `capacityPools`、 `virtualNetwork` 和  `subnet` 的值可以使用短名称或完全限定名称指定。在大多数情况下,建议使用完全限定名称,因为短名称可以与多个同名资源匹配。
备注 如果虚拟网络与Azure NetApp Files(ANF) 存储帐户位于不同的资源组中,则在配置后端资源组列表时,请为虚拟网络指定资源组。
`resourceGroups`、 `netappAccounts` 和  `capacityPools` 值是将发现的资源集限制为此存储后端可用的资源的筛选器,可以以任何组合指定。完全限定的名称遵循以下格式:
Type 格式。

Resource group

< 资源组 >

NetApp 帐户

< 资源组 >/< NetApp 帐户 >

容量池

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

虚拟网络

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

Subnet

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

卷配置

您可以通过在配置文件的特殊部分中指定以下选项来控制默认卷配置。有关详细信息,请参见 [示例配置]。

参数 Description Default

exportRule

新卷的导出规则。
exportRule 必须是以CIDR表示法表示的任意IPv4地址或IPv4子网组合的逗号分隔列表。SMB卷已忽略。

"0.0.0.0/0

snapshotDir

访问 ` .snapshot` 目录

true, false (显式设置)。

s大小

新卷的默认大小

"100 克 "

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的受管身份

此后端配置会出现异常 subscriptionID, tenantID, clientID,和 clientSecret,在使用受管身份时是可选的。

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-anf-1
  namespace: trident
spec:
  version: 1
  storageDriverName: azure-netapp-files
  capacityPools:
    - resource-group-1/netapp-account-1/ultra-pool
  resourceGroups:
    - resource-group-1
  netappAccounts:
    - resource-group-1/netapp-account-1
  virtualNetwork: resource-group-1/eastus-prod-vnet
  subnet: resource-group-1/eastus-prod-vnet/eastus-anf-subnet
适用于AKS的云身份

此后端配置会出现异常 tenantID, clientID,和 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 容量池的位置。

---
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: application-group-1/eastus-prod-vnet
subnet: application-group-1/eastus-prod-vnet/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:
      - application-group-1/netapp-account-1/ultra-1
      - application-group-1/netapp-account-1/ultra-2
    networkFeatures: Standard
  - labels:
      performance: silver
    serviceLevel: Premium
    capacityPools:
      - application-group-1/netapp-account-1/premium-1
  - labels:
      performance: bronze
    serviceLevel: Standard
    capacityPools:
      - application-group-1/netapp-account-1/standard-1
      - application-group-1/netapp-account-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卷的示例定义

使用 nasType、 node-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>

如果使用非商业 Azure 云,请确保 `tridentctl`已配置为使用 Azure 资源管理器和 Azure 云环境的身份验证终结点。如果后端创建失败,请检查后端配置并查看日志以确定原因:

tridentctl logs

确定并更正配置文件中的问题后,您可以再次运行 create 命令。