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

為 Google Cloud 後端設定Cloud Volumes Service

貢獻者 netapp-aruldeepa

了解如何使用提供的範例配置,將NetApp Cloud Volumes Service for Google Cloud 配置為Trident安裝的後端。

Google Cloud 驅動程式詳情

Trident提供 `gcp-cvs`驅動程式與集群通訊。支援的存取模式有:ReadWriteOnce (RWO)、ReadOnlyMany (ROX)、ReadWriteMany (RWX)、ReadWriteOncePod (RWOP)。

司機 協定 音量模式 支援的存取模式 支援的檔案系統

gcp-cvs

NFS

檔案系統

RWO、ROX、RWX、RWOP

nfs

了解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 區域中配置磁碟區。若要在其他區域建立卷,您可以定義其他後端。

範圍 描述 預設

version

始終為 1

storageDriverName

儲存驅動程式的名稱

"gcp-cvs"

backendName

自訂名稱或儲存後端

驅動程式名稱 + "_" + API 金鑰的一部分

storageClass

用於指定 CVS 服務類型的可選參數。使用 software`選擇 CVS 服務類型。否則, Trident會假定為 CVS-Performance 服務類型(`hardware)。

storagePools

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

projectNumber

Google Cloud 帳戶項目編號。該值可在 Google Cloud 入口網站首頁找到。

hostProjectNumber

如果使用共用 VPC 網絡,則必須執行此操作。在這種情況下, `projectNumber`這是一個服務項目,而且 `hostProjectNumber`是宿主項目。

apiRegion

Trident建立Cloud Volumes Service區的 Google Cloud 區域。建立跨區域 Kubernetes 叢集時,在下列位置建立的磁碟區: `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-Performance 值是 standardpremium , 或者 extreme。 CVS 值是 standardsw`或者 `zoneredundantstandardsw

CVS-Performance 預設值為「標準」。 CVS 預設值為“standardsw”。

network

Google Cloud 網路用於Cloud Volumes Service磁碟區。

"預設"

debugTraceFlags

故障排除時要使用的調試標誌。例子, \{"api":false, "method":true} 。除非您正在進行故障排除並需要詳細的日誌轉儲,否則請勿使用此功能。

無效的

allowedTopologies

若要啟用跨區域訪問,您的 StorageClass 定義如下: allowedTopologies`必須包含所有地區。例如:
`- key: topology.kubernetes.io/region
values:
- us-east1
- europe-west1

卷配置選項

您可以控制預設卷配置 `defaults`設定檔部分。

範圍 描述 預設

exportRule

新卷的出口規則。必須是以逗號分隔的 IPv4 位址或 IPv4 子網路的列表,採用 CIDR 表示法。

“0.0.0.0/0”

snapshotDir

訪問 `.snapshot`目錄

“錯誤的”

snapshotReserve

快照預留的磁碟區百分比

(接受 CVS 預設值 0)

size

新卷的規模。 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

在您發現並修正設定檔中的問題後,您可以再次執行建立命令。