Azure NetApp Files 后端配置选项和示例
了解 Azure NetApp Files 的 NFS 和 SMB 后端配置选项并查看配置示例。
后端配置选项
Trident 使用后端配置(子网、虚拟网络、服务级别和位置)在请求位置可用的容量池上创建 Azure NetApp Files 卷,并与请求的服务级别和子网匹配。
Azure NetApp Files 后端提供这些配置选项。
| 参数 | 说明 | 默认 |
|---|---|---|
|
始终为 1 |
|
|
存储驱动程序的名称 |
"azure-netapp-files" |
|
自定义名称或存储后端 |
驱动程序名称 + "_" + 随机字符 |
|
来自您的 Azure 订阅的订阅 ID,在 AKS 集群上启用托管标识时为可选。 |
|
|
当在 AKS 集群上使用托管标识或云标识时,来自应用注册的租户 ID 可选。 |
|
|
当在 AKS 集群上使用托管标识或云标识时,来自应用注册的客户端 ID 可选。 |
|
|
当在 AKS 集群上使用托管标识或云标识时,来自应用注册的客户端密钥可选。 |
|
|
|
""(随机) |
|
将在其中创建新卷的 Azure 位置的名称在 AKS 群集上启用托管标识时可选。 |
|
|
用于筛选已发现资源的资源组列表 |
"[]"(无过滤器) |
|
用于筛选发现的资源的 NetApp 帐户列表 |
"[]"(无过滤器) |
|
用于筛选发现资源的容量池列表 |
"[]"(无过滤器,随机) |
|
具有委派子网的虚拟网络的名称 |
"" |
|
委托给 `Microsoft.Netapp/volumes`的子网的名称 |
"" |
|
卷的 VNet 功能集,可以是 |
"" |
|
NFS 挂载选项的精细控制。SMB 卷将忽略此选项。要使用 NFS 版本 4.1 挂载卷,请在逗号分隔的挂载选项列表中包含 |
"nfsvers=3" |
|
如果请求的卷大小高于此值,则配置失败 |
" (默认情况下不强制执行) |
|
故障排除时使用的调试标志。示例, |
空 |
|
配置 NFS 或 SMB 卷创建。选项为 |
|
|
表示此后端支持的区域和可用区列表。有关详细信息,请参阅 "使用 CSI 拓扑"。 |
|
|
表示 QoS 类型:自动或手动。 |
自动 |
|
设置允许的最大吞吐量(以 MiB/秒为单位)。仅支持手动 QoS 容量池。 |
|
|
|
有关网络功能的更多信息,请参阅 "为 Azure NetApp Files 卷配置网络功能"。 |
所需权限和资源
如果在创建 PVC 时收到"未找到容量池"错误,则您的应用注册可能没有关联所需的权限和资源(子网、虚拟网络、容量池)。如果启用调试,Trident 将记录创建后端时发现的 Azure 资源。验证是否正在使用适当的角色。
`resourceGroups`、 `netappAccounts`、 `capacityPools`、 `virtualNetwork` 和 `subnet` 的值可以使用短名称或完全限定名称指定。在大多数情况下,建议使用完全限定名称,因为短名称可以与多个同名资源匹配。
|
|
如果 vNet 位于与 Azure NetApp Files (ANF) 存储帐户不同的资源组中,请在为后端配置 resourceGroups 列表时为虚拟网络指定资源组。 |
`resourceGroups`、 `netappAccounts` 和 `capacityPools` 值是将发现的资源集限制为此存储后端可用的资源的筛选器,可以以任何组合指定。完全限定的名称遵循以下格式:
| 类型 | 格式 |
|---|---|
资源组 |
<resource group> |
NetApp 帐户 |
<resource group>/<netapp account> |
容量池 |
<resource group>/<netapp account>/<capacity pool> |
虚拟网络 |
<resource group>/<virtual network> |
子网 |
<resource group>/<virtual network>/<subnet> |
卷配置
您可以通过在配置文件的特殊部分中指定以下选项来控制默认卷配置。有关详细信息,请参见 示例配置。
| 参数 | 说明 | 默认 |
|---|---|---|
|
新卷的导出规则。 |
"0.0.0.0/0" |
|
控制 .snapshot 目录的可见性 |
NFSv4 为 "true",NFSv3 为 "false" |
|
新卷的默认大小 |
"100G" |
|
新卷的 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 容量池的后端示例
此后端配置使用手动 QoS 容量池将卷放置在 Azure eastus 位置。
---
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>
如果后端创建失败,则后端配置有问题。您可以通过运行以下命令查看日志以确定原因:
tridentctl logs
在识别并更正配置文件的问题后,您可以再次运行 create 命令。