ONTAP NAS 設定選項和範例
學習如何在 Trident 安裝中建立和使用 ONTAP NAS 驅動程式。本節提供後端組態範例以及將後端對應至 StorageClasses 的詳細資訊。
從 25.10 版本開始,NetApp Trident 支援 "NetApp AFX 儲存系統"。NetApp AFX 儲存系統與其他基於 ONTAP 的系統(ASA、AFF 和 FAS)在儲存層的實作方式上有所不同。
|
|
僅支援 ontap-nas 驅動程式(使用 NFS 協定)用於 NetApp AFX 系統;不支援 SMB 協定。
|
在 Trident 後端設定中,您無需指定係統為 NetApp AFX 儲存系統。當您選擇 `ontap-nas`作為 `storageDriverName`時,Trident 會自動偵測 AFX 儲存系統。如下表所示,某些後端組態參數不適用於 AFX 儲存系統。
後端組態選項
請參閱下表以了解後端組態選項:
| 參數 | 說明 | 預設 | ||
|---|---|---|---|---|
|
始終為 1 |
|||
|
儲存驅動程式的名稱
|
|
||
|
自訂名稱或儲存後端 |
驅動程式名稱 + "_" + dataLIF |
||
|
叢集或 SVM 管理 LIF 的 IP 位址。可以指定完全限定域名(FQDN)。如果 Trident 安裝時使用了 IPv6 標誌,則可以設定為使用 IPv6 位址。IPv6 位址必須用方括號定義,例如 |
"10.0.0.1", "[2001:1234:abcd::fefe]" |
||
|
協定 LIF 的 IP 位址。NetApp 建議指定 |
指定的位址或從 SVM 衍生(如果未指定)(不建議) |
||
|
要使用的儲存虛擬機器 *MetroCluster 除外。*請參閱 MetroCluster 範例。 |
如果指定了 |
||
|
啟用自動匯出原則建立和更新 [布林值]。使用 `autoExportPolicy`和 `autoExportCIDRs`選項、 Trident 可以自動管理匯出原則。 |
錯誤 |
||
|
啟用 `autoExportPolicy`時用於篩選 Kubernetes 節點 IP 的 CIDR 清單。使用 `autoExportPolicy`和 `autoExportCIDRs`選項,Trident 可以自動管理匯出原則。 |
["0.0.0.0/0", "::/0"]` |
||
|
要套用於磁碟區的任意 JSON 格式標籤集 |
"" |
||
|
用戶端憑證的 Base64 編碼值。用於基於憑證的驗證 |
"" |
||
|
用戶端私密金鑰的 Base64 編碼值。用於憑證型驗證 |
"" |
||
|
受信任 CA 憑證的 Base64 編碼值。選用。用於憑證型驗證 |
"" |
||
|
用於連接叢集 / SVM 的使用者名稱。用於基於憑證的身份驗證。有關 Active Directory 身份驗證,請參閱 "使用 Active Directory 憑證對後端 SVM 進行 Trident 驗證"。 |
|||
|
連接到叢集 / SVM 的密碼。用於基於憑證的驗證。有關 Active Directory 驗證、請參閱 "使用 Active Directory 憑證對後端 SVM 進行 Trident 驗證"。 |
|||
|
在 SVM 中配置新磁碟區時所使用的前置字元。設定後無法更新
|
"Trident" |
||
|
用於配置的 Aggregate (選用;如果設定,則必須指派給 SVM)。對於
請勿指定用於 AFX 儲存系統。 |
"" |
||
|
如果使用率超過此百分比,則配置失敗。不適用於 Amazon FSx for ONTAP。請勿為 AFX 儲存系統指定此規則。 |
" (預設不強制執行) |
||
flexgroupAggregateList |
用於配置的 Aggregate 清單(選用;如果設定,則必須指派給 SVM)。指派給 SVM 的所有 Aggregate 都將用於配置 FlexGroup Volume。ontap-nas-flexgroup 儲存驅動程式支援此功能。
|
"" |
||
|
如果要求的磁碟區大小超過此值,則資源配置會失敗。 |
" (預設不強制執行) |
||
|
用於疑難排解的偵錯旗標。例如、{"api":false, "method":true}除非您正在進行疑難排解並需要詳細的記錄傾印、否則請勿使用 |
null |
||
|
配置 NFS 或 SMB 磁碟區的建立。選項為 |
|
||
|
以逗號分隔的 NFS 掛載選項清單。Kubernetes 持久性磁碟區的掛載選項通常在儲存類別中指定,但如果儲存類別中未指定任何掛載選項, Trident 將回退到使用儲存後端設定檔中指定的掛載選項。如果儲存類別和設定檔中均未指定掛載選項, Trident 將不會在關聯的持久性磁碟區上設定任何掛載選項。 |
"" |
||
|
每個 FlexVol 的最大 Qtree 數量必須在 [50, 300] 範圍內 |
"200" |
||
|
您可以指定以下選項之一:使用 Microsoft Management Console 或 ONTAP CLI 建立的 SMB 共用名稱;允許 Trident 建立 SMB 共用的名稱;或者您可以將此參數留空以封鎖對磁碟區的公共共用存取。對於內部部署 ONTAP,此參數為選用項目。對於 Amazon FSx for ONTAP 後端,此參數為必要項目且不能為空白。 |
|
||
|
用於使用 ONTAP REST API 的布林參數。 |
|
||
|
在 ontap-nas-economy 後端中使用 Qtree 時可請求的最大 FlexVol 大小。 |
" (預設不強制執行) |
||
|
限制 `ontap-nas-economy`後端建立新 FlexVol 磁碟區來存放其 Qtree 。僅使用預先存在的 Flexvol 來配置新的 PV 。 |
|||
|
擁有對 SMB 共用完全存取權限的 Active Directory 管理員使用者或使用者群組。使用此參數可授予對 SMB 共用的完全控制權限。 |
磁碟區配置的後端組態選項
您可以使用 defaults 配置部分中的這些選項來控制預設配置。例如、請參閱下面的組態範例。
| 參數 | 說明 | 預設 |
|---|---|---|
|
Qtree 的空間分配 |
"true" |
|
空間保留模式;「 none 」(精簡)或「 volume 」(完整) |
"none" |
|
要使用的 Snapshot 原則 |
"none" |
|
為建立的磁碟區指派的 QoS 策略群組。為每個儲存池 / 後端選擇 qosPolicy 或 adaptiveQosPolicy 其中之一 |
"" |
|
為建立的磁碟區指派的自適應 QoS 原則群組。每個儲存資源池 / 後端可選擇 qosPolicy 或 adaptiveQosPolicy 其中之一。ontap-nas-economy 不支援。 |
"" |
|
為快照保留的磁碟區百分比 |
若 `snapshotPolicy`為「none」,則為「0」,否則為「」 |
|
建立時將複本從其父項分割 |
"false" |
|
在新磁碟區上啟用 NetApp Volume Encryption(NVE);預設值為 |
"false" |
|
分層策略使用 "none" |
|
|
新磁碟區模式 |
NFS 磁碟區為「777」;SMB 磁碟區為空(不適用) |
|
控制對 |
NFSv4 為 "true" , NFSv3 為 "false" |
|
要使用的匯出原則 |
"default" |
|
新磁碟區的安全樣式。NFS 支援 `mixed`和 `unix`安全樣式。SMB 支援 `mixed`和 `ntfs`安全樣式。 |
NFS 預設值為 |
|
用於建立自訂磁碟區名稱的範本。 |
"" |
|
|
使用 QoS 原則群組搭配 Trident 需要 ONTAP 9.8 或更新版本。您應該使用非共享的 QoS 原則群組,並確保該原則群組分別套用於每個成員。共享的 QoS 原則群組會強制限制所有工作負載的總處理量上限。 |
Volume 配置範例
以下是定義預設值的範例:
---
version: 1
storageDriverName: ontap-nas
backendName: customBackendName
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
labels:
k8scluster: dev1
backend: dev1-nasbackend
svm: trident_svm
username: cluster-admin
password: <password>
limitAggregateUsage: 80%
limitVolumeSize: 50Gi
nfsMountOptions: nfsvers=4
debugTraceFlags:
api: false
method: true
defaults:
spaceReserve: volume
qosPolicy: premium
exportPolicy: myk8scluster
snapshotPolicy: default
snapshotReserve: "10"
對於 ontap-nas`和 `ontap-nas-flexgroups,Trident 現在使用新的計算方法,以確保 FlexVol 的大小與 snapshotReserve 百分比和 PVC 正確匹配。當使用者要求 PVC 時,Trident 會使用新的計算方法建立更大的原始 FlexVol。此計算方法可確保使用者在 PVC 中獲得其請求的可寫入空間,而不是少於其請求的空間。在 v21.07 之前,當使用者請求 PVC(例如 5 GiB)且 snapshotReserve 百分比為 50% 時,他們只能獲得 2.5 GiB 的可寫空間。這是因為使用者要求的是整個磁碟區,而 snapshotReserve`是其百分比。在 Trident 21.07 中,使用者要求的是可寫入空間,Trident 將該 `snapshotReserve`數值定義為整個磁碟區的百分比。這不適用於 `ontap-nas-economy。請參閱以下範例以了解其工作原理:
計算方法如下:
Total volume size = <PVC requested size> / (1 - (<snapshotReserve percentage> / 100))
對於 snapshotReserve = 50% 以及 PVC 請求 = 5 GiB,總磁碟區大小為 5/.5 = 10 GiB,可用大小為 5 GiB,這正是使用者在 PVC 請求中所要求的大小。 volume show 命令應顯示類似於此範例的結果:
升級 Trident 時,先前安裝的現有後端將按照上述說明配置磁碟區。對於升級前建立的磁碟區,您需要調整其大小才能使變更生效。例如,先前使用 snapshotReserve=50 建立的 2 GiB PVC 會產生提供 1 GiB 可寫入空間的磁碟區。將磁碟區大小調整為 3 GiB 後,應用程式將在 6 GiB 磁碟區上獲得 3 GiB 的可寫入空間。
最小組態範例
以下範例展示了基本配置,其中大多數參數都保留預設值。這是定義後端最簡單的方法。
|
|
如果您在 NetApp ONTAP 上使用 Amazon FSx 搭配 Trident,建議為 LIF 指定 DNS 名稱而非 IP 位址。 |
ONTAP NAS 經濟範例
---
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
ONTAP NAS FlexGroup 範例
---
version: 1
storageDriverName: ontap-nas-flexgroup
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
MetroCluster 範例
您可以設定後端、以避免在 "SVM 複製與復原" 期間進行切換和切換後手動更新後端定義。
為了實現無縫切換和切換回,請使用 `managementLIF`指定 SVM 並省略 `dataLIF`和 `svm`參數。例如:
---
version: 1
storageDriverName: ontap-nas
managementLIF: 192.168.1.66
username: vsadmin
password: password
SMB 磁碟區範例
---
version: 1
backendName: ExampleBackend
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
nasType: smb
securityStyle: ntfs
unixPermissions: ""
dataLIF: 10.0.0.2
svm: svm_nfs
username: vsadmin
password: password
基於憑證的驗證範例
這是一個最小的後端設定範例。 clientCertificate、 clientPrivateKey 和 trustedCACertificate(如果使用受信任的 CA,則為可選)分別填充在 backend.json 中,並分別接受客戶端憑證、私鑰和受信任的 CA 憑證的 base64 編碼值。
---
version: 1
backendName: DefaultNASBackend
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
dataLIF: 10.0.0.15
svm: nfs_svm
clientCertificate: ZXR0ZXJwYXB...ICMgJ3BhcGVyc2
clientPrivateKey: vciwKIyAgZG...0cnksIGRlc2NyaX
trustedCACertificate: zcyBbaG...b3Igb3duIGNsYXNz
storagePrefix: myPrefix_
自動匯出原則範例
本範例示範如何指示 Trident 使用動態匯出原則來自動建立和管理匯出原則。這對於 `ontap-nas-economy`和 `ontap-nas-flexgroup`驅動程式的運作方式相同。
---
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
labels:
k8scluster: test-cluster-east-1a
backend: test1-nasbackend
autoExportPolicy: true
autoExportCIDRs:
- 10.0.0.0/24
username: admin
password: password
nfsMountOptions: nfsvers=4
IPv6 位址範例
此範例展示 `managementLIF`使用 IPv6 位址。
---
version: 1
storageDriverName: ontap-nas
backendName: nas_ipv6_backend
managementLIF: "[5c5d:5edf:8f:7657:bef8:109b:1b41:d491]"
labels:
k8scluster: test-cluster-east-1a
backend: test1-ontap-ipv6
svm: nas_ipv6_svm
username: vsadmin
password: password
使用 SMB 磁碟區的 Amazon FSx for ONTAP 範例
使用 SMB 磁碟區的 FSx for ONTAP 需要 smbShare 參數。
---
version: 1
backendName: SMBBackend
storageDriverName: ontap-nas
managementLIF: example.mgmt.fqdn.aws.com
nasType: smb
dataLIF: 10.0.0.15
svm: nfs_svm
smbShare: smb-share
clientCertificate: ZXR0ZXJwYXB...ICMgJ3BhcGVyc2
clientPrivateKey: vciwKIyAgZG...0cnksIGRlc2NyaX
trustedCACertificate: zcyBbaG...b3Igb3duIGNsYXNz
storagePrefix: myPrefix_
使用 nameTemplate 的後端組態範例
---
version: 1
storageDriverName: ontap-nas
backendName: ontap-nas-backend
managementLIF: <ip address>
svm: svm0
username: <admin>
password: <password>
defaults:
nameTemplate: "{{.volume.Name}}_{{.labels.cluster}}_{{.volume.Namespace}}_{{.vo\
lume.RequestName}}"
labels:
cluster: ClusterA
PVC: "{{.volume.Namespace}}_{{.volume.RequestName}}"
具有虛擬資源池的後端範例
在下方所示的範例後端定義檔中,所有儲存池都設定了特定的預設值,例如 `spaceReserve`為 none、 `spaceAllocation`為 false 和 `encryption`為 false。虛擬池在儲存部分中定義。
Trident 在「備註」欄位中設定配置標籤。備註可以針對 `ontap-nas`在 FlexVol 上設定,或針對 `ontap-nas-flexgroup`在 FlexGroup 上設定。Trident 在配置時會將虛擬資源池上的所有標籤複製到儲存磁碟區。為了方便起見,儲存管理員可以為每個虛擬資源池定義標籤,並按標籤將磁碟區分組。
在這些範例中,部分儲存資源池設定了自己的 spaceReserve、 spaceAllocation 和 encryption 值,而部分儲存資源池則覆寫了預設值。
ONTAP NAS 範例
---
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm_nfs
username: admin
password: <password>
nfsMountOptions: nfsvers=4
defaults:
spaceReserve: none
encryption: "false"
qosPolicy: standard
labels:
store: nas_store
k8scluster: prod-cluster-1
region: us_east_1
storage:
- labels:
app: msoffice
cost: "100"
zone: us_east_1a
defaults:
spaceReserve: volume
encryption: "true"
unixPermissions: "0755"
adaptiveQosPolicy: adaptive-premium
- labels:
app: slack
cost: "75"
zone: us_east_1b
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0755"
- labels:
department: legal
creditpoints: "5000"
zone: us_east_1b
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0755"
- labels:
app: wordpress
cost: "50"
zone: us_east_1c
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0775"
- labels:
app: mysqldb
cost: "25"
zone: us_east_1d
defaults:
spaceReserve: volume
encryption: "false"
unixPermissions: "0775"
ONTAP NAS FlexGroup 範例
---
version: 1
storageDriverName: ontap-nas-flexgroup
managementLIF: 10.0.0.1
svm: svm_nfs
username: vsadmin
password: <password>
defaults:
spaceReserve: none
encryption: "false"
labels:
store: flexgroup_store
k8scluster: prod-cluster-1
region: us_east_1
storage:
- labels:
protection: gold
creditpoints: "50000"
zone: us_east_1a
defaults:
spaceReserve: volume
encryption: "true"
unixPermissions: "0755"
- labels:
protection: gold
creditpoints: "30000"
zone: us_east_1b
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0755"
- labels:
protection: silver
creditpoints: "20000"
zone: us_east_1c
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0775"
- labels:
protection: bronze
creditpoints: "10000"
zone: us_east_1d
defaults:
spaceReserve: volume
encryption: "false"
unixPermissions: "0775"
ONTAP NAS 經濟範例
---
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
svm: svm_nfs
username: vsadmin
password: <password>
defaults:
spaceReserve: none
encryption: "false"
labels:
store: nas_economy_store
region: us_east_1
storage:
- labels:
department: finance
creditpoints: "6000"
zone: us_east_1a
defaults:
spaceReserve: volume
encryption: "true"
unixPermissions: "0755"
- labels:
protection: bronze
creditpoints: "5000"
zone: us_east_1b
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0755"
- labels:
department: engineering
creditpoints: "3000"
zone: us_east_1c
defaults:
spaceReserve: none
encryption: "true"
unixPermissions: "0775"
- labels:
department: humanresource
creditpoints: "2000"
zone: us_east_1d
defaults:
spaceReserve: volume
encryption: "false"
unixPermissions: "0775"
將後端對應至 StorageClasses
以下 StorageClass 定義均指涉具有虛擬資源池的後端範例。透過 parameters.selector 欄位,每個 StorageClass 都會指定哪些虛擬資源池可用於託管磁碟區。磁碟區將具有所選虛擬資源池中定義的各個層面。
-
protection-goldStorageClass 將對應至 `ontap-nas-flexgroup`後端的第一個和第二個虛擬資源池。這些是唯一提供金級保護的資源池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-gold provisioner: csi.trident.netapp.io parameters: selector: "protection=gold" fsType: "ext4" -
該
protection-not-goldStorageClass 將映射到 `ontap-nas-flexgroup`後端的第三和第四個虛擬資源池。這些是唯一提供 gold 以外保護等級的資源池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-not-gold provisioner: csi.trident.netapp.io parameters: selector: "protection!=gold" fsType: "ext4" -
app-mysqldb`StorageClass 將對應至 `ontap-nas後端的第四個虛擬資源池。這是唯一為 mysqldb 類型應用程式提供儲存資源池組態的資源池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: app-mysqldb provisioner: csi.trident.netapp.io parameters: selector: "app=mysqldb" fsType: "ext4" -
protection-silver-creditpoints-20kStorageClass 將對應至ontap-nas-flexgroup後端的第三個虛擬資源池。這是唯一提供銀級保護和 20000 信用點的資源池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: protection-silver-creditpoints-20k provisioner: csi.trident.netapp.io parameters: selector: "protection=silver; creditpoints=20000" fsType: "ext4" -
creditpoints-5kStorageClass 將對應至ontap-nas後端的第三個虛擬資源池和ontap-nas-economy後端的第二個虛擬資源池。這些是唯一提供 5000 creditpoints 的資源池。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: creditpoints-5k provisioner: csi.trident.netapp.io parameters: selector: "creditpoints=5000" fsType: "ext4"
Trident 將決定選擇哪個虛擬資源池,並確保符合儲存需求。
初始配置後更新 dataLIF
初始設定完成後,您可以執行以下命令來變更 dataLIF,以提供包含更新 dataLIF 的新後端 JSON 檔案。
tridentctl update backend <backend-name> -f <path-to-backend-json-file-with-updated-dataLIF>
|
|
如果 PVC 連接到一個或多個 Pod、則必須關閉所有對應的 Pod、然後再將其重新啟動、以便讓新的 dataLIF 生效。 |
安全 SMB 範例
使用 ontap-nas 驅動程式進行後端組態
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm2
nasType: smb
defaults:
adAdminUser: tridentADtest
credentials:
name: backend-tbc-ontap-invest-secret
使用 ontap-nas-economy 驅動程式進行後端組態
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas-economy
managementLIF: 10.0.0.1
svm: svm2
nasType: smb
defaults:
adAdminUser: tridentADtest
credentials:
name: backend-tbc-ontap-invest-secret
後端配置與儲存資源池
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
svm: svm0
useREST: false
storage:
- labels:
app: msoffice
defaults:
adAdminUser: tridentADuser
nasType: smb
credentials:
name: backend-tbc-ontap-invest-secret
使用 ontap-nas 驅動程式的儲存類別範例
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-smb-sc
annotations:
trident.netapp.io/smbShareAdUserPermission: change
trident.netapp.io/smbShareAdUser: tridentADtest
parameters:
backendType: ontap-nas
csi.storage.k8s.io/node-stage-secret-name: smbcreds
csi.storage.k8s.io/node-stage-secret-namespace: trident
trident.netapp.io/nasType: smb
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
|
|
請務必新增 `annotations`以啟用安全 SMB 。無論後端或 PVC 中如何配置、如果沒有這些註釋、安全 SMB 都無法正常運作。 |
使用 ontap-nas-economy 驅動程式的儲存類別範例
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-smb-sc
annotations:
trident.netapp.io/smbShareAdUserPermission: change
trident.netapp.io/smbShareAdUser: tridentADuser3
parameters:
backendType: ontap-nas-economy
csi.storage.k8s.io/node-stage-secret-name: smbcreds
csi.storage.k8s.io/node-stage-secret-namespace: trident
trident.netapp.io/nasType: smb
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
包含單一 AD 使用者的 PVC 範例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc4
namespace: trident
annotations:
trident.netapp.io/smbShareAccessControl: |
change:
- tridentADtest
read:
- tridentADuser
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-smb-sc
包含多個 AD 使用者的 PVC 範例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-test-pvc
annotations:
trident.netapp.io/smbShareAccessControl: |
full_control:
- tridentTestuser
- tridentuser
- tridentTestuser1
- tridentuser1
change:
- tridentADuser
- tridentADuser1
- tridentADuser4
- tridentTestuser2
read:
- tridentTestuser2
- tridentTestuser3
- tridentADuser2
- tridentADuser3
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi