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

为Google Cloud后端配置Cloud Volumes Service

贡献者

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

Google Cloud驱动程序详细信息

Asta Trident提供了 gcp-cvs 用于与集群通信的驱动程序。支持的访问模式包括:ReadWriteOnce(RWO)、ReadOnlyMany(ROX)、ReadWriteMany(rwx)、ReadWriteOncePod(RWOP)。

驱动程序 协议 卷模式 支持的访问模式 支持的文件系统

gcp-cvs

NFS

文件系统

Rwo、ROX、rwx、RWOP

nfs

了解适用于Google Cloud的Cloud Volumes Service 的Astra Trident支持

Astra Trident可以通过"服务类型"以下两种方式之一创建Cloud Volumes Service卷:

  • CVS-Performance:默认的Astra Trident服务类型。这种性能优化的服务类型最适合重视性能的生产工作负载。CVS-Performance服务类型是一种硬件选项、支持的卷大小至少为100 GiB。您可以选择"三个服务级别"以下选项之一:

    • standard

    • premium

    • extreme

  • * CVS*:CVS服务类型提供高区域可用性、性能级别限制为中等。CVS服务类型是一个软件选项、可使用存储池支持小至1 GiB的卷。存储池最多可包含50个卷、其中所有卷都共享池的容量和性能。您可以选择"两个服务级别"以下选项之一:

    • standardsw

    • zoneredundantstandardsw

您需要的内容

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

  • 配置了NetApp Cloud Volumes Service 的Google Cloud帐户

  • Google Cloud 帐户的项目编号

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

  • Cloud Volumes Service 帐户的API密钥文件

后端配置选项

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

参数 说明 默认

version

始终为 1

storageDriverName

存储驱动程序的名称

"GCP-CVS"

backendName

自定义名称或存储后端

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

storageClass

用于指定CVS服务类型的可选参数。 software`用于选择CVS服务类型。否则,Astra Trident会采用CVS性能服务类型(`hardware)。

storagePools

仅限CVS服务类型。用于指定用于创建卷的存储池的可选参数。

projectNumber

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

hostProjectNumber

如果使用共享VPC网络、则为必需项。在此方案中、 projectNumber`是服务项目、是主项目 `hostProjectNumber

apiRegion

Astra Trident创建Cloud Volumes Service 卷的Google云区域。创建跨区域Kubnetes集群时、在中创建的卷 `apiRegion`可用于在多个Google Cloud区域的节点上计划的工作负载。跨区域流量会产生额外成本。

apiKey

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

proxyURL

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

nfsMountOptions

精细控制 NFS 挂载选项。

"nfsvers=3"

limitVolumeSize

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

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

serviceLevel

新卷的CVS-Performance或CVS服务级别。CVS性能值为 standardpremium`或 `extreme。CVS值为 standardsw`或 `zoneredundantstandardsw

CVS-Performance默认值为"standard"。CVS默认值为"standardsw"。

network

用于Cloud Volumes Service 卷的Google云网络。

default

debugTraceFlags

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

allowedTopologies

要启用跨区域访问、的存储类定义 allowedTopologies`必须包括所有区域。例如:
`- key: topology.kubernetes.io/region
values:
- us-east1
- europe-west1

卷配置选项

您可以在配置文件的部分中控制默认卷配置 defaults

参数 说明 默认

exportRule

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

"0.0.0.0/0

snapshotDir

对目录的访问权限 .snapshot

"错误"

snapshotReserve

为快照预留的卷百分比

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

size

新卷的大小。CVS性能最小值为100 GiB。CVS最小值为1 GiB。

CVS-Performance服务类型默认为"100GiB"。CVS服务类型未设置默认值、但至少需要1 GiB。

CVS-Performance服务类型示例

以下示例提供了CVS-Performance服务类型的示例配置。

示例 1 :最低配置

这是使用默认CVS-Performance服务类型以及默认"标准"服务级别的最小后端配置。

---
version: 1
storageDriverName: gcp-cvs
projectNumber: '012345678901'
apiRegion: us-west2
apiKey:
  type: service_account
  project_id: my-gcp-project
  private_key_id: "<id_value>"
  private_key: |
    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
  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:服务级别配置

此示例说明了后端配置选项、包括服务级别和卷默认值。

---
version: 1
storageDriverName: gcp-cvs
projectNumber: '012345678901'
apiRegion: us-west2
apiKey:
  type: service_account
  project_id: my-gcp-project
  private_key_id: "<id_value>"
  private_key: |
    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
  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
示例3:虚拟池配置

此示例使用 storage`配置虚拟池以及引用这些虚拟池的 `StorageClasses。请参见存储类定义以了解存储类的定义方式。

此处为所有虚拟池设置了特定默认值、将设置为5%、将设置 snapshotReserve`为 `exportRule`0.0.0.0/0。虚拟池在一节中进行了定义 `storage。每个虚拟池都定义自己的 serviceLevel,而某些池会覆盖默认值。虚拟池标签用于根据和 protection`区分池 `performance

---
version: 1
storageDriverName: gcp-cvs
projectNumber: '012345678901'
apiRegion: us-west2
apiKey:
  type: service_account
  project_id: my-gcp-project
  private_key_id: "<id_value>"
  private_key: |
    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
  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指定用于托管卷的虚拟池。卷将在选定池中定义各个方面。

存储类示例
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-extra-protection
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=extreme; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-standard-protection
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium-extra-protection
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=premium; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-standard
provisioner: csi.trident.netapp.io
parameters:
  selector: "performance=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extra-protection
provisioner: csi.trident.netapp.io
parameters:
  selector: "protection=extra"
allowVolumeExpansion: true
  • 第一个StorageClass(cvs-extreme-extra-protection)映射到第一个虚拟池。这是唯一一个可提供极高性能且 Snapshot 预留为 10% 的池。

  • 最后一个StorageClass(cvs-extra-protection)调用提供10%快照预留的任何存储池。Astra Trident决定选择哪个虚拟池、并确保满足快照预留要求。

CVS服务类型示例

以下示例提供了CVS服务类型的示例配置。

示例1:最低配置

这是用于指定CVS服务类型和默认 standardsw`服务级别的最低后端配置 `storageClass

---
version: 1
storageDriverName: gcp-cvs
projectNumber: '012345678901'
storageClass: software
apiRegion: us-east4
apiKey:
  type: service_account
  project_id: my-gcp-project
  private_key_id: "<id_value>"
  private_key: |
    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
  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
serviceLevel: standardsw
示例2:存储池配置

此示例后端配置使用 `storagePools`配置存储池。

---
version: 1
storageDriverName: gcp-cvs
backendName: gcp-std-so-with-pool
projectNumber: '531265380079'
apiRegion: europe-west1
apiKey:
  type: service_account
  project_id: cloud-native-data
  private_key_id: "<id_value>"
  private_key: |-
    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
  client_email: cloudvolumes-admin-sa@cloud-native-data.iam.gserviceaccount.com
  client_id: '107071413297115343396'
  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%40cloud-native-data.iam.gserviceaccount.com
storageClass: software
zone: europe-west1-b
network: default
storagePools:
- 1bc7f380-3314-6005-45e9-c7dc8c2d7509
serviceLevel: Standardsw

下一步是什么?

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

tridentctl create backend -f <backend-file>

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

tridentctl logs

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