为Google Cloud后端配置Cloud Volumes Service
了解如何使用提供的示例配置将适用于Google Cloud的NetApp Cloud Volumes Service配置为Trident安装的后端。
Google Cloud驱动程序详细信息
Trident提供了 `gcp-cvs`用于与集群通信的驱动程序。支持的访问模式包括:ReadWriteOnce(RWO)、ReadOnlyMany(ROX)、ReadWriteMany(rwx)、ReadWriteOncePod(RWOP)。
驱动程序 | 协议 | 卷模式 | 支持的访问模式 | 支持的文件系统 |
---|---|---|---|---|
|
NFS |
文件系统 |
Rwo、ROX、rwx、RWOP |
|
了解Trident对适用于Google Cloud的Cloud Volumes Service的支持
Trident可以使用"服务类型"以下两种方法之一创建Cloud Volumes Service卷:
以配置和使用 "适用于 Google Cloud 的 Cloud Volumes Service" 后端,您需要满足以下要求:
-
配置了NetApp Cloud Volumes Service 的Google Cloud帐户
-
Google Cloud 帐户的项目编号
-
具有
netappcloudvolumes.admin
角色的 Google Cloud 服务帐户 -
Cloud Volumes Service 帐户的API密钥文件
后端配置选项
每个后端都会在一个 Google Cloud 区域中配置卷。要在其他区域创建卷,您可以定义其他后端。
参数 | Description | Default |
---|---|---|
|
始终为 1 |
|
|
存储驱动程序的名称 |
"GCP-CVS" |
|
自定义名称或存储后端 |
驱动程序名称 + "_" + API 密钥的一部分 |
|
用于指定CVS服务类型的可选参数。 |
|
|
仅限CVS服务类型。用于指定用于创建卷的存储池的可选参数。 |
|
|
Google Cloud 帐户项目编号。此值可在Google Cloud门户主页上找到。 |
|
|
如果使用共享VPC网络、则为必需项。在此情景中、 |
|
|
Trident创建Cloud Volumes Service卷的Google Cloud区域。创建跨区域Kubnetes集群时、在中创建的卷 `apiRegion`可用于在多个Google Cloud区域的节点上计划的工作负载。跨区域流量会产生额外成本。 |
|
|
Google Cloud服务帐户的API密钥 |
|
|
代理服务器需要连接到CVS帐户时的代理URL。代理服务器可以是 HTTP 代理,也可以是 HTTPS 代理。对于 HTTPS 代理,将跳过证书验证,以允许在代理服务器中使用自签名证书。不支持启用了身份验证的代理服务器。 |
|
|
精细控制 NFS 挂载选项。 |
"nfsvers=3" |
|
如果请求的卷大小超过此值、则配置失败。 |
"" (默认情况下不强制实施) |
|
新卷的CVS-Performance或CVS服务级别。CVS-Performance值为 |
CVS-Performance默认值为"standard"。CVS默认值为"standardsw"。 |
|
用于Cloud Volumes Service 卷的Google云网络。 |
default |
|
故障排除时要使用的调试标志。示例、 |
空 |
|
要启用跨区域访问、请定义StorageClass |
卷配置选项
您可以在中控制默认卷配置 defaults
部分。
参数 | Description | Default |
---|---|---|
|
新卷的导出规则。必须是以 CIDR 表示法表示的任意 IPv4 地址或 IPv4 子网组合的逗号分隔列表。 |
"0.0.0.0/0 |
|
访问 ` .snapshot` 目录 |
false |
|
为快照预留的卷百分比 |
"" (接受 CVS 默认值为 0 ) |
|
新卷的大小。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
这是指它们。请参见 存储类定义 以查看存储类的定义方式。
此处为设置的所有虚拟池设置了特定的默认值 snapshotReserve
5%和 exportRule
到0.0.0.0/0。虚拟池在中进行定义 storage
部分。每个虚拟池都定义了自己的虚拟池 serviceLevel
、并且某些池会覆盖默认值。虚拟池标签用于根据区分池 performance
和 protection
。
--- 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%快照预留的任何存储池。Trident决定选择哪个虚拟池、并确保满足快照预留要求。
CVS服务类型示例
以下示例提供了CVS服务类型的示例配置。
示例1:最低配置
这是使用的最低后端配置 storageClass
指定CVS服务类型和默认值 standardsw
服务级别。
--- 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 命令。