在 VKS 叢集中安裝 NetApp Trident
在您的 vSphere Kubernetes Service 叢集中安裝 NetApp Trident 作為動態儲存資源配置程式,以將 NetApp ONTAP 儲存設備與您的 Kubernetes 工作負載整合。
-
請確保您的 ONTAP 叢集已設定並連線至您的 VMware Kubernetes 環境。
-
如果您的工作負載將使用這些協定進行儲存設備,請確保您的 VKS 叢集已安裝 iSCSI 或 NVMe 工具。
-
請確保已在可以使用 kubeconfig 檔案連接到 VKS 叢集的機器上安裝了
kubectl。
-
依照 Trident 文件中的說明,使用 Helm chart 安裝 Trident Operator:
在執行 Helm 安裝之前,請建立並標記
trident命名空間。此enforce=privileged標籤是必要的,因為 Trident 執行的是特權工作負載。如果沒有此標籤,Kubernetes Pod 安全性許可控制器將封鎖 Trident Pod 啟動。kubectl create namespace trident kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged顯示範例
helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident若要啟用除錯記錄,請新增
--set tridentDebug=true:helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident --set tridentDebug=true您也可以使用 Trident Operator 手動安裝 Trident。請參閱 Trident 文件中的步驟:"手動部署 Trident Operator" 在手動安裝 Trident 之前,請確保已使用所需的 pod 安全性標籤來標記 `trident`命名空間。
-
確認叢集中所有 Trident Pod 都正在運作。
顯示範例
kubectl get pods -n trident
如果 Trident Pod 啟動失敗並出現 `PodSecurity`存取錯誤,則可能是安裝前未將 Pod 安全性標籤套用到 `trident`命名空間。請使用 `--overwrite`重新套用這些標籤,然後驗證 Pod 是否啟動。 kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite
為您的環境準備儲存設備後端和 StorageClass 組態檔案
-
透過定義必要的連線詳細資訊和儲存設備參數,為 ONTAP 設定 Trident 後端。
-
在 Kubernetes 中定義對應至 NetApp 儲存設備後端的儲存設備類別。這些類別指定效能特性和複寫原則等參數。
根據工作負載的要求,為下列協定定義 Trident 後端和儲存設備類別:
-
NAS(ontap-nas 驅動程式)
-
NAS Economy(ontap-nas-economy 驅動程式)
-
SAN(ontap-san 驅動程式)支援 iSCSI、FC 或 NVMe 協議
-
SAN Economy(ontap-san-economy 驅動程式)適用於 iSCSI
網路儲存為 ONTAP NAS 建立 TridentBackendConfig 和 StorageClass,以啟用基於 NFS 的持久性儲存配置。後端組態包含儲存在 Kubernetes Secret 中的認證,並參照您的 ONTAP SVM 和管理 LIF。
使用使用者名稱和密碼認證的後端金鑰和後端設定檔案範例(另存為
tbc-nas.yaml):# tbc-nas.yaml apiVersion: v1 kind: Secret metadata: name: tbc-nas-secret namespace: trident type: Opaque data: username: "<base64-encoded cluster admin username>" password: "<base64-encoded cluster admin password>" --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: tbc-nas namespace: trident spec: version: 1 storageDriverName: ontap-nas managementLIF: <ONTAP management LIF> backendName: tbc-nas svm: <your SVM name> storagePrefix: <your prefix for all volume names created using this backend configuration> defaults: nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}" credentials: name: tbc-nas-secret使用用戶端憑證認證的後端金鑰和後端設定檔案範例(另存為
tbc-nas.yaml):# tbc-nas.yaml apiVersion: v1 kind: Secret metadata: name: ontap-nas-secret namespace: trident type: Opaque stringData: clientPrivateKey: <client private key value> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: tbc-nas namespace: trident spec: version: 1 storageDriverName: ontap-nas managementLIF: <ONTAP management LIF> backendName: tbc-nas svm: <your SVM name> storagePrefix: <your prefix for all volume names created using this backend configuration> credentials: name: ontap-nas-secret clientCertificate: <client certificate>StorageClass 定義(另存為
sc-nas.yaml):mountOptions是一個可選參數,用於指定 NFS Volume 的附加裝載選項。此nconnect選項允許為單一 NFS 裝載建立多個並行 TCP 連線,從而提升高吞吐量工作負載的效能。預設值為 1,但可以增加至 ONTAP 系統允許的最大值。
-
ONTAP 支援在支援 nconnect 的用戶端上,單一 NFS 裝載最多可建立 16 個連線。Trident 會將裝載選項直接傳遞給 Kubernetes 工作節點,因此請選擇工作節點 NFS 用戶端和 ONTAP 都支援的值;以下範例使用四個連線。
# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
allowVolumeExpansion: true
mountOptions:
- nconnect=4
為 ONTAP NAS Economy 驅動程式建立 TridentBackendConfig 和 StorageClass,以使用 qtree 啟用基於 NFS 的持續儲存資源配置。後端組態包含儲存在 Kubernetes Secret 中的憑證,並參照您的 ONTAP SVM 和管理 LIF。
使用使用者名稱和密碼認證的後端金鑰和後端設定檔案範例(另存為 tbc-nas-economy.yaml):
# tbc-nas-economy.yaml
apiVersion: v1
kind: Secret
metadata:
name: tbc-nas-economy-secret
namespace: trident
type: Opaque
data:
username: "<base64-encoded cluster admin username>"
password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-nas-economy
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas-economy
managementLIF: <ONTAP management LIF>
backendName: tbc-nas-eco
svm: <your SVM name>
storagePrefix: <your prefix for all volume names created using this backend configuration>
defaults:
nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
credentials:
name: tbc-nas-economy-secret
StorageClass 定義(另存為 sc-nas-economy.yaml):
# sc-nas-economy.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-nas-economy
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas-economy"
media: "ssd"
provisioningType: "thin"
allowVolumeExpansion: true
mountOptions:
- nconnect=4
建立適用於 ONTAP SAN 與 iSCSI 的 TridentBackendConfig 和 StorageClass,以啟用基於 iSCSI 的區塊儲存資源配置。後端組態使用 ontap-san 驅動程式,並包含儲存在 Kubernetes Secret 中的憑證。若省略 sanType 參數,則預設使用 iSCSI 通訊協定。
使用使用者名稱和密碼驗證的後端金鑰和後端組態檔案(另存為 tbc-iscsi.yaml):
# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-iscsi-secret
namespace: trident
type: Opaque
data:
username: "<base64-encoded cluster admin username>"
password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: ontap-iscsi
namespace: trident
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <ONTAP management LIF>
backendName: ontap-iscsi
svm: <your SVM name>
credentials:
name: backend-tbc-ontap-iscsi-secret
使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-iscsi.yaml):
# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-iscsi-secret
namespace: trident
type: Opaque
stringData:
clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: ontap-iscsi
namespace: trident
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <ONTAP management LIF>
backendName: ontap-iscsi
svm: <your SVM name>
credentials:
name: backend-tbc-ontap-iscsi-secret
clientCertificate: <client certificate>
StorageClass 定義(另存為 sc-iscsi.yaml):
# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
為 ONTAP SAN 搭配 NVMe 建立 TridentBackendConfig 和 StorageClass,以啟用基於 NVMe 的區塊儲存資源配置。後端組態使用 ontap-san 驅動程式,並包含儲存在 Kubernetes Secret 中的憑證。 sanType`參數必須設定為 `nvme。
使用使用者名稱和密碼驗證的後端金鑰和後端組態檔案(另存為 tbc-nvme.yaml):
# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-nvme-secret
namespace: trident
type: Opaque
data:
username: "<base64-encoded cluster admin username>"
password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: ontap-nvme
namespace: trident
spec:
version: 1
storageDriverName: ontap-san
sanType: nvme
managementLIF: <ONTAP management LIF>
backendName: ontap-nvme
svm: <your SVM name>
credentials:
name: backend-tbc-ontap-nvme-secret
使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-nvme.yaml):
# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-nvme-secret
namespace: trident
type: Opaque
stringData:
clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: ontap-nvme
namespace: trident
spec:
version: 1
storageDriverName: ontap-san
sanType: nvme
managementLIF: <ONTAP management LIF>
backendName: ontap-nvme
svm: <your SVM name>
credentials:
name: backend-tbc-ontap-nvme-secret
clientCertificate: <client certificate>
StorageClass 定義(另存為 sc-nvme.yaml):
# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
fsType: ext4
snapshots: "true"
allowVolumeExpansion: true
請參閱 Trident 文件,以取得更多 YAML 檔案範例,以及 SAN 驅動程式和 NAS 驅動程式支援的存取模式和 Volume 模式的相關資訊。
建立 VolumeSnapshotClass 組態檔案
建立 VolumeSnapshotClass 定義。此組態可為持續性 Volume 啟用快照型作業。
VolumeSnapshotClass 定義(另存為 snapshot-class.yaml):
# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain
將組態檔套用至叢集
使用 `kubectl`將您在前面步驟中建立的組態檔套用至 vSphere Kubernetes 服務叢集。這將在您的叢集中建立必要的機密、後端組態、儲存設備類別和快照類別。
-
為您配置的每個協定套用 TridentBackendConfig 和 StorageClass 檔案。
kubectl apply -f tbc-nas.yaml -n trident kubectl apply -f sc-nas.yaml kubectl apply -f tbc-nas-economy.yaml -n trident kubectl apply -f sc-nas-economy.yaml kubectl apply -f tbc-iscsi.yaml -n trident kubectl apply -f sc-iscsi.yaml kubectl apply -f tbc-nvme.yaml -n trident kubectl apply -f sc-nvme.yaml kubectl apply -f snapshot-class.yaml -
確認資源已成功建立。
檢查 TridentBackendConfig 物件:
kubectl get tbc -n trident檢查 StorageClass 物件:
kubectl get storageclass檢查 VolumeSnapshotClass:
kubectl get volumesnapshotclass
設定預設的 Trident 儲存設備和快照類別
將 Trident StorageClass 和 VolumeSnapshotClass 設為 vSphere Kubernetes Service 叢集中的預設值。
-
設定預設的 Trident StorageClass。
將 Trident 支援的 StorageClass 設定為叢集預設值,以便在未指定儲存類別時,PersistentVolumeClaims 自動使用它。
確保只將一個 StorageClass 設定為預設值。如果另一個 StorageClass 已設定為預設值,請將其註解設為
false。從 CLI:
kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' -
設定預設的 Trident VolumeSnapshotClass。
將 Trident 支援的 VolumeSnapshotClass 設定為叢集預設值,以啟用持續性 Volume 的快照型作業。這可確保 VolumeSnapshots 在未指定快照類別時,自動使用 Trident CSI 驅動程式。
確保只將一個 VolumeSnapshotClass 設定為預設值。如果另一個 VolumeSnapshotClass 已設定為預設值,請將其註解設為
false。從 CLI:
kubectl patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'
使用 Kubernetes Persistent Volume Claims 為工作負載請求儲存設備
Trident 會自動從後端 NetApp 儲存設備配置必要的 Volume。有關在 VKS 叢集中使用 PVC 部署工作負載的範例,請參閱 "使用持續儲存部署工作負載"。