Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

設定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

nfs

瞭解 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服務類型的選用參數。用於 software`選擇 CVS 服務類型。否則, Trident 將採用 CVS-Performance 服務類型(`hardware)。

storagePools

僅限CVS服務類型。選用參數、用於指定用於建立磁碟區的儲存資源池。

「ProjectNumber」

Google Cloud帳戶專案編號。此值可在Google Cloud入口網站首頁找到。

「hostProjectNumber」

如果使用共享VPC網路、則為必要項目。在此案例中、 projectNumber 是服務專案、以及 hostProjectNumber 是主機專案。

《apiRegion》

Trident 建立 Cloud Volumes Service Volume 的 Google Cloud 區域。建立跨區域 Kubernetes 叢集時、在中建立的磁碟區 `apiRegion`可用於跨多個 Google Cloud 區域的節點上排程的工作負載。跨區域流量會產生額外成本。

「apiKey」

的Google Cloud服務帳戶API金鑰 netappcloudvolumes.admin 角色:其中包含Google Cloud服務帳戶私密金鑰檔案(逐字複製到後端組態檔)的JSON-格式內容。

"proxyurl"

Proxy URL(如果需要Proxy伺服器才能連線至CVS帳戶)。Proxy伺服器可以是HTTP Proxy或HTTPS Proxy。對於HTTPS Proxy、會跳過憑證驗證、以允許在Proxy伺服器中使用自我簽署的憑證。不支援已啟用驗證的Proxy伺服器。

「nfsMountOptions」

精細控制NFS掛載選項。

"nfsves=3"

《限制Volume大小》

如果要求的磁碟區大小高於此值、則資源配置失敗。

""(預設不強制執行)

《服務層級》

適用於新磁碟區的CVS效能或CVS服務層級。CVS的效能值為 standardpremium`或 `extreme。CVS值包括 standardswzoneredundantstandardsw

CVS效能預設為「標準」。CVS預設為「標準」。

網路

Google Cloud網路用於Cloud Volumes Service 解決資料不整的問題。

"預設"

「DebugTraceFlags」

疑難排解時要使用的偵錯旗標。範例: \{"api":false, "method":true}。除非您正在進行疑難排解並需要詳細的記錄傾印、否則請勿使用此功能。

null

allowedTopologies

若要啟用跨區域存取、您的StorageClass定義適用於 allowedTopologies 必須包含所有區域。例如:
- key: topology.kubernetes.io/region
values:
- us-east1
- europe-west1

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`和某些資源池會覆寫預設值。虛擬資源池標籤是用來區分資源池的依據 `performanceprotection

---
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命令。