為 Google Cloud 後端設定Cloud Volumes Service
了解如何使用提供的範例配置,將NetApp Cloud Volumes Service for Google Cloud 配置為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磁碟區:"服務類型" :
-
CVS-Performance: 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 區域中配置磁碟區。若要在其他區域建立卷,您可以定義其他後端。
| 範圍 | 描述 | 預設 |
|---|---|---|
|
始終為 1 |
|
|
儲存驅動程式的名稱 |
"gcp-cvs" |
|
自訂名稱或儲存後端 |
驅動程式名稱 + "_" + API 金鑰的一部分 |
|
用於指定 CVS 服務類型的可選參數。使用 |
|
|
僅限CVS服務類型。用於指定磁碟區建立儲存池的可選參數。 |
|
|
Google Cloud 帳戶項目編號。該值可在 Google Cloud 入口網站首頁找到。 |
|
|
如果使用共用 VPC 網絡,則必須執行此操作。在這種情況下, `projectNumber`這是一個服務項目,而且 `hostProjectNumber`是宿主項目。 |
|
|
Trident建立Cloud Volumes Service區的 Google Cloud 區域。建立跨區域 Kubernetes 叢集時,在下列位置建立的磁碟區: `apiRegion`可用於跨多個 Google Cloud 區域的節點上調度的工作負載。跨區域運輸會產生額外費用。 |
|
|
用於 Google Cloud 服務帳戶的 API 金鑰 `netappcloudvolumes.admin`角色。它包含 Google Cloud 服務帳戶私鑰檔案的 JSON 格式內容(原封不動地複製到後端設定檔中)。 |
|
|
如果需要代理伺服器才能連接到 CVS 帳戶,請提供代理 URL。代理伺服器可以是HTTP代理,也可以是HTTPS代理。對於 HTTPS 代理,會跳過憑證驗證,以允許在代理伺服器中使用自簽名憑證。不支援啟用身份驗證的代理伺服器。 |
|
|
對 NFS 掛載選項進行精細控制。 |
"nfsvers=3" |
|
如果請求的磁碟區大小大於此值,則配置失敗。 |
(預設不強制執行) |
|
CVS-Performance 或 CVS 服務等級(適用於新磁碟區)。 CVS-Performance 值是 |
CVS-Performance 預設值為「標準」。 CVS 預設值為“standardsw”。 |
|
Google Cloud 網路用於Cloud Volumes Service磁碟區。 |
"預設" |
|
故障排除時要使用的調試標誌。例子, |
無效的 |
|
若要啟用跨區域訪問,您的 StorageClass 定義如下: |
卷配置選項
您可以控制預設卷配置 `defaults`設定檔部分。
| 範圍 | 描述 | 預設 |
|---|---|---|
|
新卷的出口規則。必須是以逗號分隔的 IPv4 位址或 IPv4 子網路的列表,採用 CIDR 表示法。 |
“0.0.0.0/0” |
|
訪問 `.snapshot`目錄 |
“錯誤的” |
|
快照預留的磁碟區百分比 |
(接受 CVS 預設值 0) |
|
新卷的規模。 CVS-Performance 最低要求為 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
-
第一個儲存類(
cvs-extreme-extra-protection) 映射到第一個虛擬池。這是唯一提供極致效能且快照儲備為 10% 的儲存池。 -
最後一個儲存類別(
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
在您發現並修正設定檔中的問題後,您可以再次執行建立命令。