設定Cloud Volumes Service 適用於Google Cloud後端的功能
瞭解如何使用提供的範例組態、將 NetApp Cloud Volumes Service for Google Cloud 設定為 Trident 安裝的後端。
Google Cloud 驅動程式詳細資料
Trident 提供 `gcp-cvs`與叢集通訊的驅動程式。支援的存取模式包括: ReadWriteOnce ( rwo )、 ReadOnlyMany ( ROX )、 _ReadWriteMany ( rwx )、 _ReadWriteOncePod ( RWOP )。
驅動程式 | 傳輸協定 | Volume模式 | 支援的存取模式 | 支援的檔案系統 |
---|---|---|---|---|
《GCP—CVS》 |
NFS |
檔案系統 |
Rwo 、 ROX 、 rwx 、 RWOP |
|
瞭解 Trident 支援 Cloud Volumes Service for Google Cloud
Trident 可以在"服務類型"以下兩種中的其中一種中建立 Cloud Volumes Service Volume :
-
*CVS-Performance * :預設的 Trident 服務類型。這種效能最佳化的服務類型最適合重視效能的正式作業工作負載。CVS效能服務類型是一種硬體選項、可支援最小100 GiB大小的磁碟區。您可以選擇"三種服務層級"下列其中一項:
-
standard
-
premium
-
extreme
-
-
* CVS:CVS服務類型提供高分區可用度、但效能等級僅限於中度。CVS服務類型是一種軟體選項、使用儲存資源池來支援小至1 GiB的磁碟區。儲存資源池最多可包含50個磁碟區、其中所有磁碟區都會共用資源池的容量和效能。您可以選擇其中一項 "兩種服務層級":
-
standardsw
-
zoneredundantstandardsw
-
以設定及使用 "適用於 Google Cloud Cloud Volumes Service" 後端、您需要下列項目:
-
Google Cloud帳戶已設定NetApp Cloud Volumes Service 功能
-
Google Cloud帳戶的專案編號
-
Google Cloud服務帳戶的角色為「netappcloudVolumes.admin」
-
API金鑰檔案、供Cloud Volumes Service 您的I方面 帳戶使用
後端組態選項
每個後端都會在單一Google Cloud區域中配置磁碟區。若要在其他區域建立磁碟區、您可以定義其他後端。
參數 | 說明 | 預設 |
---|---|---|
「分度」 |
永遠為1 |
|
「torageDriverName」 |
儲存驅動程式名稱 |
「GCP-CVS」 |
「後端名稱」 |
自訂名稱或儲存後端 |
驅動程式名稱+「_」+ API金鑰的一部分 |
「torageClass」 |
用於指定CVS服務類型的選用參數。用於 |
|
|
僅限CVS服務類型。選用參數、用於指定用於建立磁碟區的儲存資源池。 |
|
「ProjectNumber」 |
Google Cloud帳戶專案編號。此值可在Google Cloud入口網站首頁找到。 |
|
「hostProjectNumber」 |
如果使用共享VPC網路、則為必要項目。在此案例中、 |
|
《apiRegion》 |
Trident 建立 Cloud Volumes Service Volume 的 Google Cloud 區域。建立跨區域 Kubernetes 叢集時、在中建立的磁碟區 `apiRegion`可用於跨多個 Google Cloud 區域的節點上排程的工作負載。跨區域流量會產生額外成本。 |
|
「apiKey」 |
的Google Cloud服務帳戶API金鑰 |
|
"proxyurl" |
Proxy URL(如果需要Proxy伺服器才能連線至CVS帳戶)。Proxy伺服器可以是HTTP Proxy或HTTPS Proxy。對於HTTPS Proxy、會跳過憑證驗證、以允許在Proxy伺服器中使用自我簽署的憑證。不支援已啟用驗證的Proxy伺服器。 |
|
「nfsMountOptions」 |
精細控制NFS掛載選項。 |
"nfsves=3" |
《限制Volume大小》 |
如果要求的磁碟區大小高於此值、則資源配置失敗。 |
""(預設不強制執行) |
《服務層級》 |
適用於新磁碟區的CVS效能或CVS服務層級。CVS的效能值為 |
CVS效能預設為「標準」。CVS預設為「標準」。 |
網路 |
Google Cloud網路用於Cloud Volumes Service 解決資料不整的問題。 |
"預設" |
「DebugTraceFlags」 |
疑難排解時要使用的偵錯旗標。範例: |
null |
|
若要啟用跨區域存取、您的StorageClass定義適用於 |
Volume資源配置選項
您可以在中控制預設的Volume資源配置 defaults
組態檔的一節。
參數 | 說明 | 預設 |
---|---|---|
「匯出規則」 |
新磁碟區的匯出規則。必須是以逗號分隔的清單、以CIDR表示法列出所有的IPv4位址或IPv4子網路組合。 |
「0.00.0.0/0」 |
「napshotDir |
存取「.snapshot」目錄 |
"假" |
「快照保留區」 |
保留給快照的磁碟區百分比 |
""(接受CVS預設值為0) |
《大小》 |
新磁碟區的大小。CVS效能最低為100 GiB。CVS最低為1 GiB。 |
CVS效能服務類型預設為「100GiB」。CVS服務類型並未設定預設值、但至少需要1 GiB。 |
CVS效能服務類型範例
下列範例提供CVS效能服務類型的範例組態。
範例1:最低組態
這是使用預設「標準」服務層級的預設CVS效能服務類型的最低後端組態。
--- 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:服務層級組態
本範例說明後端組態選項、包括服務層級和Volume預設值。
--- 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.00.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
)對應至第一個虛擬資源池。這是唯一提供極致效能、快照保留率為10%的資源池。 -
Last StorageClass (
cvs-extra-protection
(最後一個 StorageClass )調用任何提供 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命令。