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

为 GCP 后端配置 CVS

贡献者

了解如何使用提供的示例配置将适用于 Google 云平台( GCP )的 NetApp Cloud Volumes Service ( CVS )配置为 Astra Trident 安装的后端。

备注 NetApp Cloud Volumes Service for Google Cloud 不支持大小小于 100 GiB 的 CVS-Performance 卷或小于 300 GiB 的 CVS 卷。如果请求的卷小于最小大小,则 Astra Trident 会自动创建最小大小的卷。
您需要的内容

以配置和使用 "适用于 Google Cloud 的 Cloud Volumes Service" 后端,您需要满足以下要求:

  • 配置了 NetApp CVS 的 Google Cloud 帐户

  • Google Cloud 帐户的项目编号

  • 具有 netappcloudvolumes.admin 角色的 Google Cloud 服务帐户

  • CVS 服务帐户的 API 密钥文件

Astra Trident 现在支持使用默认值的较小卷 "GCP 上的 CVS 服务类型"。用于使用创建的后端 `storageClass=software`下、卷的最小配置大小将为300 GiB。CVS 目前在 " 受控可用性 " 下提供此功能,不提供技术支持。用户必须注册才能访问低于 1TiB 的卷 "此处"。NetApp 建议客户对非生产工作负载使用 1 TiB 以下的卷。

备注 使用默认 CVS 服务类型( storageClass=software )部署后端时,用户必须获得 GCP 上有关项目编号和项目 ID 的 1 TiB 卷功能的访问权限。这对于 Astra Trident 配置低于 1TiB 的卷是必需的。否则,对于小于 600 GiB 的 PVC ,卷创建将失败。使用访问低于 1TiB 的卷 "此表单"

由 Astra Trident 为默认 CVS 服务级别创建的卷将按以下方式进行配置:

  • 小于 300 GiB 的 PVC 将导致 Astra Trident 创建 300 GiB CVS 卷。

  • 如果 PVC 介于 300 GiB 到 600 GiB 之间,则 Astra Trident 将创建请求大小的 CVS 卷。

  • 介于 600 GiB 和 1 TiB 之间的 PVC 将导致 Astra Trident 创建 1 TiB CVS 卷。

  • 如果 PVC 大于 1 TiB ,则 Astra Trident 将创建请求大小的 CVS 卷。

后端配置选项

有关后端配置选项,请参见下表:

参数 Description Default

ve版本

始终为 1

storageDriverName

存储驱动程序的名称

"GCP-CVS"

backendName

自定义名称或存储后端

驱动程序名称 + "_" + API 密钥的一部分

s存储类

存储类型可选择 硬件 (性能优化)或 s软件 ( CVS 服务类型)

projectNumber

Google Cloud 帐户项目编号。该值可在 Google Cloud 门户的主页页面上找到。

区域

CVS 帐户区域。后端将在该区域配置卷。

apiKey

具有 netappcloudvolumes.admin 角色的 Google Cloud 服务帐户的 API 密钥。它包括 Google Cloud 服务帐户专用密钥文件的 JSON 格式的内容(逐字复制到后端配置文件)。

代理 URL

代理服务器需要连接到 CVS 帐户时的代理 URL 。代理服务器可以是 HTTP 代理,也可以是 HTTPS 代理。对于 HTTPS 代理,将跳过证书验证,以允许在代理服务器中使用自签名证书。不支持启用了身份验证的代理服务器。

nfsMountOptions

精细控制 NFS 挂载选项。

"nfsvers=3"

limitVolumeSize

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

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

s服务级别

新卷的 CVS 服务级别。这些值包括 "standard" , "premer" 和 "Extreme " 。

标准

网络

用于CVS卷的GCP网络

default

debugTraceFlags

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

如果使用共享 VPC 网络,则必须同时指定 projectNumberhostProjectNumber 。在这种情况下, projectNumber 是服务项目,而 hostProjectNumber 是主机项目。

"apiRegion"` 表示 Astra Trident 在其中创建 CVS 卷的 GCP 区域。 Astra Trident 可以在属于同一 GCP 区域的 Kubernetes 节点上挂载和附加卷。`后端时,请务必确保 "apiRegion" 与中部署的 Kubernetes 节点所在的区域匹配。在创建跨区域 Kubernetes 集群时,在 apiRegion 中创建的 CVS 卷只能用于在同一 GCP 区域的节点上计划的工作负载。

备注 storageClass 是一个可选参数,您可以使用该参数选择所需的 "CVS 服务类型"。您可以从基本 CVS 服务类型( storageClass=software )或 CVS-Performance 服务类型( storageClass=hardware )中进行选择, Trident 默认使用此服务类型。请 指定一个 "apiRegion" ,用于在后端定义中提供相应的 CVS storageClass
重要说明 Astra Trident 与 Google Cloud 上的基本 CVS 服务类型集成是一项 * 测试版功能 * ,不适用于生产工作负载。在 CVS-Performance 服务类型中, Trident 是 "* 完全支持 "* ,默认情况下会使用它。

每个后端都会在一个 Google Cloud 区域中配置卷。要在其他区域创建卷,您可以定义其他后端。

您可以通过在配置文件的特殊部分中指定以下选项来控制默认配置每个卷的方式。请参见以下配置示例。

参数 Description Default

exportRule

新卷的导出规则

"0.0.0.0/0

snapshotDir

访问 ` .snapshot` 目录

false

sSnapshot 预留

为快照预留的卷百分比

"" (接受 CVS 默认值为 0 )

s大小

新卷的大小

"100Gi"

exportRule 值必须是以 CIDR 表示法表示的 IPv4 地址或 IPv4 子网任意组合的逗号分隔列表。

备注 对于在 CVS Google Cloud 后端创建的所有卷, Trident 会在配置存储池时将其上的所有标签复制到该存储卷。存储管理员可以为每个存储池定义标签,并对存储池中创建的所有卷进行分组。这样,您就可以根据后端配置中提供的一组可自定义标签来方便地区分卷了。

示例 1 :最低配置

这是绝对的最低后端配置。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "1234567890123456789012345678901234567890",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    }
}

示例 2 :基本 CVS 服务类型配置

此示例显示了使用基本 CVS 服务类型的后端定义,该服务类型适用于通用工作负载,可提供轻 / 中性能以及高区域可用性。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "storageClass": "software",
    "apiRegion": "us-east4",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "1234567890123456789012345678901234567890",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    }
}

示例 3 :单服务级别配置

此示例显示了一个后端文件,该文件对 Google Cloud us-west2 区域中由 Astra Trident 创建的所有存储应用相同的方面。此示例还显示了后端配置文件中使用的 proxyURL

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "1234567890123456789012345678901234567890",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    },
    "proxyURL": "http://proxy-server-hostname/",
    "nfsMountOptions": "vers=3,proto=tcp,timeo=600",
    "limitVolumeSize": "10Ti",
    "serviceLevel": "premium",
    "defaults": {
        "snapshotDir": "true",
        "snapshotReserve": "5",
        "exportRule": "10.0.0.0/24,10.0.1.0/24,10.0.2.100",
        "size": "5Ti"
    }
}

示例 4 :虚拟存储池配置

此示例显示了使用虚拟存储池配置的后端定义文件以及引用这些池的 StorageClasses

在下面显示的示例后端定义文件中,为所有存储池设置了特定的默认值,这些默认值会将 snapshotReserve 设置为 5% ,并将 exportRule 设置为 0.0.0.0/0 。虚拟存储池在 s存储 部分中进行定义。在此示例中,每个存储池都会设置自己的 serviceLevel ,而某些池会覆盖默认值。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "1234567890123456789012345678901234567890",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    },
    "nfsMountOptions": "vers=3,proto=tcp,timeo=600",

    "defaults": {
        "snapshotReserve": "5",
        "exportRule": "0.0.0.0/0"
    },

    "labels": {
        "cloud": "gcp"
    },
    "region": "us-west2",

    "storage": [
        {
            "labels": {
                "performance": "extreme",
                "protection": "extra"
            },
            "serviceLevel": "extreme",
            "defaults": {
                "snapshotDir": "true",
                "snapshotReserve": "10",
                "exportRule": "10.0.0.0/24"
            }
        },
        {
            "labels": {
                "performance": "extreme",
                "protection": "standard"
            },
            "serviceLevel": "extreme"
        },
        {
            "labels": {
                "performance": "premium",
                "protection": "extra"
            },
            "serviceLevel": "premium",
            "defaults": {
                "snapshotDir": "true",
                "snapshotReserve": "10"
            }
        },

        {
            "labels": {
                "performance": "premium",
                "protection": "standard"
            },
            "serviceLevel": "premium"
        },

        {
            "labels": {
                "performance": "standard"
            },
            "serviceLevel": "standard"
        }
    ]
}

以下 StorageClass 定义引用了上述存储池。通过使用 parameters.selector 字段,您可以为每个 StorageClass 指定用于托管卷的虚拟池。卷将在选定池中定义各个方面。

第一个 StorageClass (cvs-ext-protection )映射到第一个虚拟存储池。这是唯一一个可提供极高性能且 Snapshot 预留为 10% 的池。最后一个 StorageClass (cvs-extra protection )调用提供 10% 快照预留的任何存储池。Astra Trident 决定选择哪个虚拟存储池,并确保满足快照预留要求。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=extreme; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-standard-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-standard
provisioner: netapp.io/trident
parameters:
  selector: "performance=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "protection=extra"
allowVolumeExpansion: true

下一步是什么?

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

tridentctl create backend -f <backend-file>

如果后端创建失败,则后端配置出现问题。您可以运行以下命令来查看日志以确定发生原因:

tridentctl logs

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