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

Kubernetes和Trident物件

貢獻者

您可以透過讀取和寫入資源物件、使用REST API與Kubernetes和Trident互動。Kubernetes與Trident、Trident與Storage、Kubernetes與儲存設備之間有幾個資源物件、分別是它們之間的關係。其中有些物件是透過Kubernetes進行管理、其他物件則是透過Trident進行管理。

物件如何彼此互動?

瞭解物件、物件的適用範圍及其互動方式、最簡單的方法可能是遵循Kubernetes使用者的單一儲存要求:

  1. 使用者會建立 PersistentVolumeClaim 正在申請新的 PersistentVolume Kubernetes的特定尺寸 StorageClass 這是先前由系統管理員設定的。

  2. Kubernetes StorageClass 將Trident識別為其資源配置程式、並包含可告知Trident如何為所要求的類別資源配置Volume的參數。

  3. Trident會自行決定 StorageClass 使用識別相符項目的相同名稱 BackendsStoragePools 可用來為類別配置磁碟區。

  4. Trident會在相符的後端上配置儲存設備、並建立兩個物件:a PersistentVolume Kubernetes告訴Kubernetes如何尋找、掛載及處理Volume、以及Trident中保留兩者關係的Volume PersistentVolume 以及實際儲存設備。

  5. Kubernetes會連結 PersistentVolumeClaim 新的 PersistentVolume。包含的Pod PersistentVolumeClaim 將該PeristentVolume掛載到其執行的任何主機上。

  6. 使用者會建立 VolumeSnapshot 現有的PVC,使用 VolumeSnapshotClass 這是Trident的重點。

  7. Trident會識別與該PVc相關聯的磁碟區、並在其後端建立磁碟區快照。也會建立 VolumeSnapshotContent 這會指示Kubernetes如何識別快照。

  8. 使用者可以建立 PersistentVolumeClaim 使用 VolumeSnapshot 來源:

  9. Trident會識別所需的快照、並執行建立所需的相同步驟集 PersistentVolume 和答 Volume

提示 如需進一步瞭解Kubernetes物件、我們強烈建議您閱讀 "持續磁碟區" Kubernetes文件的一節。

Kubernetes PersistentVolumeClaim 物件

Kubernetes PersistentVolumeClaim 物件是Kubernetes叢集使用者所提出的儲存要求。

除了標準規格之外、Trident還可讓使用者指定下列Volume專屬附註、以覆寫您在後端組態中設定的預設值:

註釋 Volume選項 支援的驅動程式

trident.netapp.io/fileSystem

檔案系統

ONTAP-SAN、solidfire-san、Eseries -iSCSI、ONTAP-san經濟型

trident.netapp.io/cloneFromPVC

cloneSourceVolume

ONTAP-NAS、ONTAP-SAN、Solidfire-SAN、AWs-CVS、azure-NetApp-Files、 GCP-CVS、ONTAP-san經濟

trident.netapp.io/splitOnClone

分岔OnClone

ONTAP-NAS、ONTAP-SAN

trident.netapp.io/protocol

傳輸協定

任何

trident.netapp.io/exportPolicy

匯出原則

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS- Flexgroup

trident.netapp.io/snapshotPolicy

Snapshot原則

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS-flexgroup、ONTAP-SAN

trident.netapp.io/snapshotReserve

Snapshot保留區

ONTAP-NAS、ONTAP-NAs-flexgroup、ONTAP-SAN、AWs-CVS、GCP-CVS

trident.netapp.io/snapshotDirectory

Snapshot目錄

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS- Flexgroup

trident.netapp.io/unixPermissions

unix權限

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS- Flexgroup

trident.netapp.io/blockSize

區塊大小

solidfire-san

如果建立的PV具有 Delete 回收原則:Trident會在PV發行時(亦即使用者刪除PVc時)同時刪除PV和備用Volume。如果刪除動作失敗、Trident會將PV標示為這樣、並定期重試該作業、直到成功或手動刪除PV為止。如果PV使用 Retain 原則、Trident會忽略它、並假設系統管理員會從Kubernetes和後端進行清理、以便在移除磁碟區之前、先備份或檢查該磁碟區。請注意、刪除PV並不會導致Trident刪除背板Volume。您應該使用REST API將其移除 (tridentctl)。

Trident支援使用csi規格建立Volume Snapshot:您可以建立Volume Snapshot、並將其作為資料來源來複製現有的PVCS。如此一來、PV的時間點複本就能以快照形式呈現給Kubernetes。快照可用來建立新的PV。請看一下 On-Demand Volume Snapshots 以瞭解這項功能的運作方式。

Trident也提供 cloneFromPVCsplitOnClone 建立複本的附註。您可以使用這些附註來複製一個PVC,而不需要使用csi實作(在Kubernetes 1.13及更早版本上)或Kubernetes版本不支援beta Volume Snapshot(Kubernetes 1.16及更早版本)。請記住、Trident 19.10支援從PVc複製的csi工作流程。

註 您可以使用 cloneFromPVCsplitOnClone 附有「csi Trident」和傳統非csi前端的註釋。

以下是一個範例:如果使用者已經有一個名為的PVc mysql、使用者可以建立名為的新永久虛擬環境 mysqlclone 使用註釋、例如 trident.netapp.io/cloneFromPVC: mysql。使用此註釋集、Trident會複製對應於mySQL PVc的磁碟區、而非從頭開始配置磁碟區。

請考量以下幾點:

  • 我們建議您複製閒置的Volume。

  • 一個PVc及其複本應位於相同的Kubernetes命名空間中、且具有相同的儲存類別。

  • 使用 ontap-nasontap-san 驅動程式、可能需要設定PVc註釋 trident.netapp.io/splitOnClone 與搭配使用 trident.netapp.io/cloneFromPVC。與 trident.netapp.io/splitOnClone 設定為 true、Trident將複製的磁碟區從父磁碟區分割出來、因此將複製的磁碟區生命週期與父磁碟區完全分離、而犧牲部分儲存效率。未設定 trident.netapp.io/splitOnClone 或設定為 false 減少後端的空間使用量、而犧牲父磁碟區與複製磁碟區之間的相依性、因此除非先刪除複本、否則無法刪除父磁碟區。分割實體複製是合理的做法、是將空的資料庫磁碟區複製到磁碟區及其實體複製環境、以大幅分散差異、而非ONTAP 受益於由NetApp提供的儲存效率。

sample-input 目錄包含用於Trident的PVc定義範例。請參閱Trident Volume物件、以取得與Trident Volume相關的參數和設定完整說明。

Kubernetes PersistentVolume 物件

Kubernetes PersistentVolume 物件代表Kubernetes叢集可用的一部分儲存設備。它的生命週期與使用它的Pod無關。

註 Trident會建立 PersistentVolume 根據資源配置的磁碟區、自動在Kubernetes叢集中登錄物件。您不需要自行管理。

當您建立參照Trident型的PVc時 StorageClass、Trident會使用對應的儲存類別來配置新的Volume、並針對該Volume登錄新的PV。在設定已配置的Volume和對應的PV時、Trident遵循下列規則:

  • Trident會產生Kubernetes的PV名稱、以及用來配置儲存設備的內部名稱。在這兩種情況下、都是確保名稱在其範圍內是唯一的。

  • 磁碟區的大小會盡可能接近在室早中所要求的大小、不過視平台而定、磁碟區可能會四捨五入至最接近的可分配數量。

Kubernetes StorageClass 物件

Kubernetes StorageClass 物件是以中的名稱來指定 PersistentVolumeClaims 以一組內容來配置儲存設備。儲存類別本身會識別要使用的資源配置程式、並根據資源配置程式所瞭解的方式來定義該組內容。

這是需要由系統管理員建立及管理的兩個基本物件之一。另一個是Trident後端物件。

Kubernetes StorageClass 使用Trident的物件看起來像這樣:

apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: <Name>
provisioner: csi.trident.netapp.io
mountOptions: <Mount Options>
parameters:
  <Trident Parameters>

這些參數是Trident專屬的、可告訴Trident如何為類別配置Volume。

儲存類別參數包括:

屬性 類型 必要 說明

屬性

map[stric]字串

請參閱以下「屬性」一節

storagePools

map[stringList

將後端名稱對應至中的儲存資源池清單

其他StoragePools

map[stringList

將後端名稱對應至中的儲存資源池清單

排除StoragePools

map[stringList

將後端名稱對應至中的儲存資源池清單

儲存屬性及其可能值可分類為儲存資源池選擇屬性和Kubernetes屬性。

儲存資源池選擇屬性

這些參數決定應使用哪些Trident託管儲存資源池來配置特定類型的磁碟區。

屬性 類型 價值 優惠 申請 支援者

媒體1^

字串

HDD、混合式、SSD

資源池包含此類型的媒體、混合式表示兩者

指定的媒體類型

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS-flexgroup、ONTAP-SAN、solidfire-san

資源配置類型

字串

纖薄、厚實

Pool支援此資源配置方法

指定的資源配置方法

厚:全ONTAP 系列支援iSCSI;薄型:全ONTAP 系列支援整合式SAN

後端類型

字串

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS-flexgroup、ONTAP-SAN、solidfire-san、 Eseries - iSCSI、AWs-CVS、GCP-CVS、azure-NetApp-Files、ONTAP-san經濟

集區屬於此類型的後端

指定後端

所有驅動程式

快照

布爾

對、錯

集區支援具有快照的磁碟區

已啟用快照的Volume

ONTAP-NAS、ONTAP-SAN、Solidfire-SAN、AWs-CVS、GCP-CVS

複製

布爾

對、錯

資源池支援複製磁碟區

已啟用複本的Volume

ONTAP-NAS、ONTAP-SAN、Solidfire-SAN、AWs-CVS、GCP-CVS

加密

布爾

對、錯

資源池支援加密磁碟區

已啟用加密的Volume

ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS- FlexGroups、ONTAP-SAN

IOPS

內部

正整數

集區能夠保證此範圍內的IOPS

Volume保證這些IOPS

solidfire-san

1:ONTAP Select 不受支援

在大多數情況下、所要求的值會直接影響資源配置、例如、要求完整資源配置會導致資源配置較為密集的Volume。不過、元素儲存資源池會使用其提供的IOPS下限和上限來設定QoS值、而非所要求的值。在此情況下、要求的值僅用於選取儲存資源池。

理想情況下、您可以使用 attributes 只有模型、才能建立儲存設備的品質、滿足特定類別的需求。Trident會自動探索並選取符合_all_的儲存集區 attributes 您指定的。

如果您發現自己無法使用 attributes 若要自動為類別選取適當的資源池、您可以使用 storagePoolsadditionalStoragePools 用於進一步精簡集區或甚至選取特定集區集區的參數。

您可以使用 storagePools 參數以進一步限制符合任何指定之集區的集合 attributes。換句話說、Trident會使用由所識別的資源池交會 attributesstoragePools 資源配置參數。您可以單獨使用參數、也可以同時使用兩者。

您可以使用 additionalStoragePools 此參數可延伸Trident用於資源配置的集區集區集區集區集區集區、無論所選取的任何集區為何 attributesstoragePools 參數。

您可以使用 excludeStoragePools 篩選Trident用於資源配置的資源池集區集合的參數。使用此參數會移除任何相符的集區。

在中 storagePoolsadditionalStoragePools 參數、每個項目都採用格式 <backend>:<storagePoolList>、其中 <storagePoolList> 是指定後端的儲存資源池清單、以英文分隔。例如、的值 additionalStoragePools 看起來可能是這樣 ontapnas_192.168.1.100:aggr1,aggr2;solidfire_192.168.1.101:bronze。這些清單接受後端值和清單值的regex值。您可以使用 tridentctl get backend 以取得後端及其資源池清單。

Kubernetes屬性

這些屬性在動態資源配置期間、不會影響Trident選擇儲存資源池/後端。相反地、這些屬性只會提供Kubernetes持續磁碟區所支援的參數。工作節點負責檔案系統建立作業、可能需要檔案系統公用程式、例如xfsprogs。

屬性 類型 價值 說明 相關驅動因素 Kubernetes版本

FSType

字串

ext4、ext3、xfs等

區塊磁碟區的檔案系統類型

solidfire-san、ontap、ontap、san經濟型、E系列iSCSI

全部

Trident安裝程式套件提供數個範例儲存類別定義、可與中的Trident搭配使用 sample-input/storage-class-*.yaml。刪除Kubernetes儲存類別也會刪除對應的Trident儲存類別。

Kubernetes VolumeSnapshotClass 物件

Kubernetes VolumeSnapshotClass 物件類似 StorageClasses。它們有助於定義多種儲存類別、並由Volume Snapshot參考、以將快照與所需的Snapshot類別建立關聯。每個Volume Snapshot都與單一Volume Snapshot類別相關聯。

VolumeSnapshotClass 應由系統管理員定義以建立快照。建立具有下列定義的Volume Snapshot類別:

apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
  name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete

driver 指定要要求的Kubernetes磁碟區快照 csi-snapclass 類別由Trident處理。。 deletionPolicy 指定必須刪除快照時要採取的動作。何時 deletionPolicy 設為 Delete、刪除快照時、會移除儲存叢集上的Volume Snapshot物件及基礎快照。或者、將其設定為 Retain 也就是說 VolumeSnapshotContent 並保留實體快照。

Kubernetes VolumeSnapshot 物件

Kubernetes VolumeSnapshot 物件是建立磁碟區快照的要求。就像使用者針對磁碟區所提出的要求一樣、磁碟區快照是使用者建立現有虛擬磁碟快照的要求。

當磁碟區快照要求出現時、Trident會在後端自動管理磁碟區的快照建立、並建立唯一的快照來公開快照
VolumeSnapshotContent 物件:您可以從現有的PVCS建立快照、並在建立新的PVCS時、將快照作為DataSource使用。

註 Volume Snapshot的生命週期與來源PVCs無關:即使刪除來源PVCs、快照仍會持續存在。刪除具有相關快照的永久虛擬磁碟時、Trident會將此永久虛擬磁碟的備份磁碟區標示為*刪除*狀態、但不會將其完全移除。刪除所有相關的快照時、即會移除該磁碟區。

Kubernetes VolumeSnapshotContent 物件

Kubernetes VolumeSnapshotContent 物件代表從已配置的磁碟區擷取的快照。類似於 PersistentVolume 並表示儲存叢集上已配置的快照。類似 PersistentVolumeClaimPersistentVolume 建立快照時的物件 VolumeSnapshotContent 物件會將一對一的對應維持在上 VolumeSnapshot 物件、要求建立快照。

註 Trident會建立 VolumeSnapshotContent 根據資源配置的磁碟區、自動在Kubernetes叢集中登錄物件。您不需要自行管理。

VolumeSnapshotContent 物件包含可唯一識別快照的詳細資料、例如 snapshotHandle。這 snapshotHandle 是PV名稱與名稱的獨特組合 VolumeSnapshotContent 物件:

當快照要求出現時、Trident會在後端建立快照。建立快照之後、Trident會設定 VolumeSnapshotContent 然後將快照公開給Kubernetes API。

Kubernetes CustomResourceDefinition 物件

Kubernetes自訂資源是Kubernetes API中由系統管理員定義的端點、用於將類似物件分組。Kubernetes支援建立自訂資源來儲存物件集合。您可以執行來取得這些資源定義 kubectl get crds

自訂資源定義(CRD)及其相關的物件中繼資料會由Kubernetes儲存在其中繼資料儲存區中。如此一來、您就不需要另外建立Trident的儲存區。

從19.07版開始、Trident使用了許多 CustomResourceDefinition 保留Trident物件身分的物件、例如Trident後端、Trident儲存類別和Trident Volume。這些物件由Trident管理。此外、「csi Volume Snapshot」架構也引進了定義Volume快照所需的部分CRD。

CRD是Kubernetes建構。上述資源的物件是由Trident所建立。例如、使用建立後端時 tridentctl、對應的 tridentbackends CRD物件是由Kubernetes所建立、供其使用。

以下是Trident客戶需求日的幾點重點:

  • 安裝Trident時、會建立一組客戶需求日、並可像使用任何其他資源類型一樣使用。

  • 從先前版本的Trident(使用的Trident)升級時 etcd 為了維持狀態)、Trident安裝程式會從移轉資料 etcd 金鑰值資料儲存區、並建立對應的CRD物件。

  • 使用解除安裝Trident時 tridentctl uninstall 命令、Trident Pod會刪除、但建立的客戶需求日不會清除。請參閱 "解除安裝Trident" 瞭解如何徹底移除Trident並從頭重新設定。

Trident StorageClass 物件

Trident為Kubernetes建立相符的儲存類別 StorageClass 指定的物件 csi.trident.netapp.io/netapp.io/trident 在他們的資源配置工具欄位中。儲存類別名稱與Kubernetes名稱相符 StorageClass 所代表的物件。

註 使用Kubernetes時、這些物件會在Kubernetes時自動建立 StorageClass 使用Trident做為資源配置程式的功能已登錄。

儲存類別包含一組磁碟區需求。Trident會將這些需求與每個儲存資源池中的屬性相符;如果符合、則該儲存資源池是使用該儲存類別來配置磁碟區的有效目標。

您可以使用REST API建立儲存類別組態、以直接定義儲存類別。不過、在Kubernetes部署中、我們預期在登錄新Kubernetes時會建立這些部署 StorageClass 物件:

Trident後端物件

後端代表儲存供應商、其中Trident會配置磁碟區;單一Trident執行個體可管理任何數量的後端。

註 這是您自己建立和管理的兩種物件類型之一。另一個是Kubernetes StorageClass 物件:

如需如何建構這些物件的詳細資訊、請參閱後端組態。

Trident StoragePool 物件

儲存資源池代表可在每個後端上進行資源配置的不同位置。就支援而言ONTAP 、這些項目對應於SVM中的集合體。對於NetApp HCI / SolidFire、這些服務會對應到系統管理員指定的QoS頻段。就架構而言、這些項目對應於雲端供應商所在的地區。Cloud Volumes Service每個儲存資源池都有一組獨特的儲存屬性、可定義其效能特性和資料保護特性。

與此處的其他物件不同、儲存資源池候選項目一律會自動探索及管理。

Trident Volume 物件

Volume是資源配置的基本單位、包含NFS共用和iSCSI LUN等後端端點。在Kubernetes中、這些項目會直接對應至 PersistentVolumes。建立磁碟區時、請確定它有一個儲存類別、決定該磁碟區可以配置的位置及大小。

註 在Kubernetes中、會自動管理這些物件。您可以檢視這些資源、以查看資源配置的Trident內容。
提示 刪除具有相關快照的PV時、對應的Trident Volume會更新為*刪除*狀態。若要刪除Trident磁碟區、您應該移除該磁碟區的快照。

Volume組態會定義已配置磁碟區應具備的內容。

屬性 類型 必要 說明

版本

字串

Trident API版本(「1」)

名稱

字串

是的

要建立的Volume名稱

storageClass

字串

是的

配置Volume時使用的儲存類別

尺寸

字串

是的

要配置的磁碟區大小(以位元組為單位)

傳輸協定

字串

要使用的傳輸協定類型;「檔案」或「區塊」

內部名稱

字串

儲存系統上的物件名稱;由Trident產生

cloneSourceVolume

字串

Sof the volume to clone from(NAS、SAN)& Se-& AWs-CV:要複製的磁碟區名稱ONTAP SolidFire

分岔OnClone

字串

例(NAS、SAN):從父實體分割複本ONTAP

Snapshot原則

字串

S--*:快照原則ONTAP

Snapshot保留區

字串

Sing-*:保留給快照的磁碟區百分比ONTAP

匯出原則

字串

ONTAP-NAS*:要使用的匯出原則

Snapshot目錄

布爾

ONTAP-NAS*:快照目錄是否可見

unix權限

字串

ONTAP-NAS*:初始UNIX權限

區塊大小

字串

S--*:區塊/區段大小SolidFire

檔案系統

字串

檔案系統類型

Trident會產生 internalName 建立Volume時。這包括兩個步驟。首先、它會預先加上儲存前置詞(預設值之一 trident 或是後端組態中的前置字元)到磁碟區名稱、產生表單名稱 <prefix>-<volume-name>。然後、它會繼續清理名稱、取代後端不允許的字元。對於後端、它會以底線取代連字號(因此內部名稱會變成ONTAP <prefix>_<volume-name>)。對於元素後端、它會以連字號取代底線。E系列對所有物件名稱設有30個字元的限制、Trident會針對每個Volume的內部名稱產生隨機字串。CVS(AWS)會對唯一的磁碟區建立權杖設有16到36個字元的限制、Trident會針對每個磁碟區的內部名稱產生一個隨機字串。

您可以使用Volume組態、使用REST API直接配置磁碟區、但在Kubernetes部署中、我們預期大多數使用者都會使用標準Kubernetes PersistentVolumeClaim 方法。Trident會自動建立此Volume物件、做為資源配置程序的一部分。

Trident Snapshot 物件

快照是磁碟區的時間點複本、可用來配置新的磁碟區或還原狀態。在Kubernetes中、這些項目會直接對應至 VolumeSnapshotContent 物件:每個快照都與一個Volume相關聯、該磁碟區是快照資料的來源。

每個 Snapshot 物件包含下列內容:

屬性 類型 必要 說明

版本

字串

是的

Trident API版本(「1」)

名稱

字串

是的

Trident Snapshot物件的名稱

內部名稱

字串

是的

儲存系統上Trident Snapshot物件的名稱

Volume名稱

字串

是的

為其建立快照的持續Volume名稱

Volume內部名稱

字串

是的

儲存系統上相關Trident Volume物件的名稱

註 在Kubernetes中、會自動管理這些物件。您可以檢視這些資源、以查看資源配置的Trident內容。

當Kubernetes時 VolumeSnapshot 物件要求已建立、Trident可在備份儲存系統上建立Snapshot物件。。 internalName 此快照物件的產生方式為結合前置詞 snapshot- 使用 UIDVolumeSnapshot 物件(例如、 snapshot-e8d8a0ca-9826-11e9-9807-525400f3f660)。 volumeNamevolumeInternalName 會透過取得備用磁碟區的詳細資料來填入。