Storage

本頁面說明適用於 VMware 的 Google Distributed Cloud (僅限軟體) 儲存空間概念。

摘要

Google Distributed Cloud 可透過下列方式與外部區塊或檔案儲存系統整合:

  • vSphere Container Storage Interface (CSI) 驅動程式
  • 第三方 CSI 驅動程式
  • Kubernetes 樹內磁碟區外掛程式

vSphere 資料儲存庫

建立管理員叢集時,請為叢集的 etcd 資料指定現有的 vSphere datastore

建立使用者叢集時,您可以與管理員叢集使用相同的資料存放區,也可以指定不同的資料存放區。您也可以為個別節點集區指定資料存放區。

管理員和使用者叢集使用的 vSphere Datastore 可以由 NFS、vSAN 或 VMFS 支援,這些項目位於外部儲存陣列等區塊裝置上。在多主機環境中,每個區塊裝置都必須附加至環境中的所有主機,且資料儲存庫必須透過「Mount Datastore on Additional Hosts」(在其他主機上掛接資料儲存庫)選項,在每部主機上設定。

StorageClasses

建立 PersistentVolumeClaim 時,您可以指定 StorageClass,提供儲存空間佈建方式的相關資訊。如果未指定 StorageClass,系統會使用預設的 StorageClass。

管理員叢集 StorageClass

在管理員叢集中,有名為 standard 的 StorageClass,且該 StorageClass 指定為預設 StorageClass。standard StorageClass 會將 vSphere 樹狀結構內磁碟區外掛程式列為佈建工具。

如要查看 standard StorageClass:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get storageclass \
    standard --output yaml

在輸出內容中,您可以看到 standard 是預設的 StorageClass,而佈建工具是 vSphere 樹狀結構內建磁碟區外掛程式 kubernetes.io/vsphere-volume。您也可以查看 vSphere 資料存放區的名稱。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  labels:
    bundle.gke.io/component-name: admin-storage-class
  name: standard
...
parameters:
  datastore: vsanDatastore
provisioner: kubernetes.io/vsphere-volume
...

使用者叢集 StorageClasses

在使用者叢集中,有名為 standard 的 StorageClass,以及名為 standard-rwo 的 StorageClass。

standard-rwo StorageClass 會指定為預設 StorageClass,並將 vSphere CSI 驅動程式列為佈建工具。

如要查看 standard-rwo StorageClass:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclass \
    standard-rwo --output yaml

在輸出中,您會看到 standard-rwo 是預設的 StorageClass,而佈建器是 vSphere CSI 驅動程式 csi.vsphere.vmware.com。您也可以查看 vSphere 資料儲存庫的網址:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
    ...
  labels:
    bundle.gke.io/component-name: user-vsphere-csi-driver-addon
    ...
  name: standard-rwo
...
parameters:
  datastoreURL: ds:///vmfs/volumes/vsan:52fb6ca22be2454e-e67f620175964a9f/
provisioner: csi.vsphere.vmware.com
...

Kubernetes 樹內磁碟區外掛程式

Kubernetes 隨附多個樹內磁碟區外掛程式。不過,這些樹內磁碟區外掛程式大多已淘汰 (包括 vSphere 樹內磁碟區外掛程式),詳情請參閱 CSI 遷移專案。

vSphere 儲存空間驅動程式的 CSI 遷移作業

過去,樹內 vSphere 磁碟區外掛程式是使用者叢集預設 StorageClass 的佈建器。但現在樹內 vSphere 磁碟區外掛程式已淘汰,而 vSphere CSI 驅動程式是使用者叢集預設 StorageClass 的佈建程式。建議您使用 vSphere CSI 驅動程式,不要使用樹狀結構內建的磁碟區外掛程式。

從 Google Distributed Cloud 1.15 版開始,系統會預設為樹狀結構內的 vSphere 磁碟區外掛程式啟用 Kubernetes CSI 遷移功能。也就是說,如果工作負載使用樹狀結構內 vSphere 磁碟區,所有內部儲存空間作業呼叫都會自動重新導向至 vSphere CSI 驅動程式。

舉例來說,假設 PersistentVolumeClaim 指定 standard StorageClass,其中列出 vSphere 樹內磁碟區外掛程式 kubernetes.io/vsphere-volume 做為佈建工具。這樣一來,任何使用該 PersistentVolumeClaim 的工作負載,都會將儲存空間作業呼叫重新導向至 vSphere CSI 驅動程式 csi.vsphere.vmware.com

預檢

建立或升級叢集時,系統會進行預檢,確保您的環境適合 CSI 遷移作業。

舉例來說,預檢會檢查:

  • 確認 vCenter 和 ESXI 版本是否合適。
  • 如果樹狀結構內有 vSphere PersistentVolume,請確認已啟用 vSphere CSI 驅動程式。
  • 確認 vSphere StorageClass 沒有特定參數,這些參數在 CSI 遷移後會遭到忽略。
  • 確認靜態建立的樹內 PersistentVolume 和 PersistentVolumeClaim 的註解,這些註解是 CSI 遷移作業的必要條件。
  • 確認叢集可使用 vSphere CSI 驅動程式佈建的 CSI 磁碟區,順利執行工作負載。

詳情請參閱「執行前置檢查」。

已知問題

vSphere CSI 驅動程式有幾個已知問題。如需相關資訊和解決方法,請參閱 VMWare vSphere CSI 驅動程式 3.0 版版本資訊的「已知問題」一節。

完成遷移至 CSI 的程序

Kubernetes 1.15 預設會啟用 CSI 遷移功能,因此由隨附的 vSphere 磁碟區外掛程式支援的 PersistentVolume 會繼續在僅限 CSI 的環境中運作,只是會將隨附外掛程式的作業呼叫重新導向至 CSI 外掛程式。由於 PersistentVolume 規格不可變更,因此規格會與樹狀結構內磁碟區外掛程式相同。

因此,這類磁碟區無法使用 CSI 的完整功能集,例如磁碟區擴充和磁碟區快照功能。如要使用這些功能,您必須將有狀態工作負載完全遷移至 CSI,方法是使用 CSI 欄位重新建立 Kubernetes 資源規格。我們開發了自動化工具,可協助您將有狀態的工作負載遷移至 CSI,且不會造成應用程式停機,讓您充分運用 CSI 功能集。

使用第三方驅動程式

如要佈建 vSphere 資料儲存庫以外的儲存空間磁碟區,您可以在叢集中建立新的 StorageClass,並使用不同的儲存空間驅動程式。接著,您可以將 StorageClass 設為叢集的預設值,或將工作負載設定為使用 StorageClass (StatefulSet 範例)。

儲存空間合作夥伴

我們與許多儲存空間供應商合作,確保他們的儲存系統符合 Google Distributed Cloud 的資格。請參閱合格儲存空間合作夥伴完整名單。

磁碟區擴充

永久磁碟區佈建完成後,您可以編輯 PersistentVolumeClaim 中的容量要求,擴大永久磁碟區的大小。您可以在磁碟區供 Pod 使用時進行線上擴充,或在磁碟區未使用時進行離線擴充。

如為 vSphere CSI 驅動程式,離線擴充功能適用於 vSphere 7.0 以上版本,線上擴充功能則適用於 vSphere 7.0 Update 2 以上版本。

對於在 >= vSphere 7.0 上執行的新叢集,standard-rwo StorageClass 預設會將 allowVolumeExpansion 設為 true。您可以使用這個 StorageClass,線上和離線擴充磁碟區。對於升級後的叢集,由於叢集升級時不會修改 StorageClass,因此當叢集從 1.7 升級至 1.8 時,standard-rwo 中的 allowVolumeExpansion 設定仍未設定,這表示不允許擴充磁碟區。

如要進一步瞭解磁碟區擴充功能,請參閱「使用磁碟區擴充功能」。

CSI 磁碟區快照

您可以使用 VolumeSnapshotVolumeSnapshotClass 資源,建立永久儲存空間的快照。如要在 CSI 磁碟區上使用這項功能,CSI 驅動程式必須支援磁碟區快照,且 external-snapshotter Sidecar 容器必須納入 CSI 驅動程式部署作業。

如要進一步瞭解磁碟區快照,請參閱「使用磁碟區快照功能」。

建立叢集時,系統會自動部署 CSI 快照控制器。

磁碟區清理

刪除使用者叢集時,系統不會刪除 vSphere CSI 驅動程式佈建的磁碟區。刪除叢集前,請先刪除所有磁碟區、PersistentVolumeClaims 和 StatefulSets。

疑難排解

請參閱「排解儲存空間問題」。

延伸閱讀