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 帐户的项目编号

  • Google Cloud服务帐户 netappcloudvolumes.admin role

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

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

备注 使用默认CVS服务类型部署后端时 (storageClass=software)、用户必须获得GCP上有关项目编号和项目ID的子1TiB卷功能的访问权限。这对于 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

version

始终为 1

storageDriverName

存储驱动程序的名称

"GCP-CVS"

backendName

自定义名称或存储后端

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

storageClass

存储类型选择选项 hardware (性能优化)或 software (CVS服务类型)

projectNumber

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

apiRegion

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

apiKey

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

proxyURL

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

nfsMountOptions

精细控制 NFS 挂载选项。

"nfsvers=3"

limitVolumeSize

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

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

serviceLevel

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

标准

network

用于CVS卷的GCP网络

default

debugTraceFlags

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

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

apiRegion 表示Astra Trident创建CVS卷的GCP区域。Astra Trident 可以在属于同一 GCP 区域的 Kubernetes 节点上挂载和附加卷。创建后端时、务必确保 apiRegion 与部署Kubernetes节点的区域匹配。创建跨区域Kubernetes集群时、在给定中创建的CVS卷 apiRegion 只能用于在同一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

snapshotReserve

为快照预留的卷百分比

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

size

新卷的大小

"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。虚拟存储池在中进行定义 storage 部分。在此示例中、每个存储池都设置了自己的存储池 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-extreme-extra-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 命令。