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

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

贡献者

了解ANF的NFS和SMB后端配置选项、并查看配置示例。

Astra Trident会使用后端配置(子网、虚拟网络、服务级别和位置)在请求的位置提供的容量池上创建ANF卷、并与请求的服务级别和子网匹配。

备注 Astra Trident 不支持手动 QoS 容量池。

后端配置选项

ANF后端提供了这些配置选项。

参数 Description Default

version

始终为 1

storageDriverName

存储驱动程序的名称

"Azure-netapp-files"

backendName

自定义名称或存储后端

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

subscriptionID

Azure 订阅中的订阅 ID

tenantID

应用程序注册中的租户 ID

clientID

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

clientSecret

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

serviceLevel

其中一个 StandardPremium`或 `Ultra

"" (随机)

location

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

resourceGroups

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

"[]" (无筛选器)

netappAccounts

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

"[]" (无筛选器)

capacityPools

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

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

virtualNetwork

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

""

subnet

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

""

networkFeatures

一个卷的一组vNet功能可能是 BasicStandard。网络功能并非在所有地区都可用、可能需要在订阅中启用。指定 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卷创建。选项包括 nfssmb 或为空。默认情况下、将设置为空会将NFS卷设置为空。

nfs

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

所需权限和资源

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

的值 resourceGroupsnetappAccountscapacityPoolsvirtualNetwork,和 subnet 可以使用短名称或完全限定名称来指定。在大多数情况下、建议使用完全限定名称、因为短名称可以与多个同名资源匹配。

resourceGroupsnetappAccounts,和 capacityPools 值是指筛选器、用于将发现的一组资源限制为此存储后端可用的资源、并且可以以任意组合方式指定。完全限定名称采用以下格式:

Type 格式。

Resource group

< 资源组 >

NetApp 帐户

< 资源组 >/< NetApp 帐户 >

容量池

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

虚拟网络

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

Subnet

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

卷配置

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

参数 Description Default

exportRule

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

"0.0.0.0/0

snapshotDir

控制 .snapshot 目录的可见性

false

size

新卷的默认大小

"100 克 "

unixPermissions

新卷的UNIX权限(4个八进制数字)。SMB卷已忽略。

"" (预览功能,需要在订阅中列入白名单)

备注 对于在ANF后端创建的所有卷、Astra Trident会在配置存储池时将存储池上的标签复制到该存储卷。存储管理员可以为每个存储池定义标签,并对存储池中创建的所有卷进行分组。这是一种根据后端配置中提供的一组可自定义标签区分卷的便捷方式。

示例配置

示例 1 :最低配置

这是绝对的最低后端配置。使用此配置, Astra Trident 会发现在已配置位置委派给 ANF 的所有 NetApp 帐户,容量池和子网,并随机将新卷放置在其中一个池和子网上。因为 nasType 省略 nfs 默认情况下适用、后端将为NFS卷配置。

当您刚开始使用 ANF 并尝试执行相关操作时,此配置是理想的选择,但实际上,您希望为所配置的卷提供更多范围界定。

{
    "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"
}
示例 2 :使用容量池筛选器的特定服务级别配置

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

    {
        "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"
],
    }
示例 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"
        }
    }
示例 4 :虚拟存储池配置

此后端配置可在一个文件中定义多个存储池。如果您有多个容量池支持不同的服务级别,并且您希望在 Kubernetes 中创建表示这些服务级别的存储类,则此功能非常有用。

    {
        "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"
        },
        "location": "eastus",

        "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"]
            }
        ]
    }

存储类定义

以下内容 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凭据。

示例1:默认命名空间上的基本配置
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"
示例2:每个命名空间使用不同的密钥
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}
示例3:每个卷使用不同的密钥
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 命令。