Installer NetApp Trident dans un cluster VKS
Installez NetApp Trident comme provisionneur de stockage dynamique dans votre cluster vSphere Kubernetes Service pour intégrer le stockage NetApp ONTAP à vos charges de travail Kubernetes.
-
Assurez-vous que votre cluster ONTAP est configuré et connecté à votre environnement VMware Kubernetes.
-
Assurez-vous que votre cluster VKS dispose des outils iSCSI ou NVMe installés si vos charges de travail utiliseront ces protocoles pour le stockage.
-
Assurez-vous d'avoir
kubectlinstallé sur une machine à partir de laquelle vous pouvez vous connecter au cluster VKS à l'aide du fichier kubeconfig.
-
Installez l’opérateur Trident à l’aide d’un chart Helm en suivant les instructions de la documentation Trident :
Avant d'exécuter l'installation Helm, créez et étiquetez l'
trident`espace de noms. L'étiquette `enforce=privilegedest requise car Trident exécute des charges de travail privilégiées. Sans cela, le contrôleur d'admission de la sécurité des pods Kubernetes empêchera le démarrage des pods Trident.kubectl create namespace trident kubectl label namespace trident pod-security.kubernetes.io/enforce=privilegedAfficher un exemple
helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace tridentPour activer la journalisation de débogage, ajoutez
--set tridentDebug=true:helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident --set tridentDebug=trueVous pouvez également installer Trident manuellement à l'aide de l'opérateur Trident. Consultez la documentation Trident pour connaître la procédure : "Déployez manuellement l’opérateur Trident" Assurez-vous d'avoir étiqueté l'espace de noms
tridentavec les étiquettes de sécurité de pod requises avant d'installer Trident manuellement. -
Confirmez que tous les pods Trident sont en cours d'exécution dans le cluster.
Afficher un exemple
kubectl get pods -n trident
Si les pods Trident ne démarrent pas et qu'une erreur d' PodSecurity`admission se produit, il est possible que les étiquettes de sécurité des pods n'aient pas été appliquées à l' `trident`espace de noms avant l'installation. Utilisez `--overwritepour les réappliquer, puis vérifiez que les pods démarrent.kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite
Préparez les fichiers de configuration du système de stockage et de StorageClass pour votre environnement
-
Configurez un backend Trident pour ONTAP en définissant les détails de connexion et les paramètres de stockage nécessaires.
-
Définissez des classes de stockage dans Kubernetes qui correspondent aux backends de stockage NetApp. Ces classes spécifient des paramètres tels que les caractéristiques de performance et les politiques de réplication.
Définissez les backends Trident et les classes de stockage pour les protocoles suivants, selon les besoins de vos charges de travail :
-
NAS (pilote ontap-nas)
-
NAS Economy (pilote ontap-nas-economy)
-
SAN (pilote ontap-san) pour les protocoles iSCSI, FC ou NVMe
-
SAN Economy (pilote ontap-san-economy) pour iSCSI
NASCréez un TridentBackendConfig et un StorageClass pour ONTAP NAS afin d'activer le provisionnement de stockage persistant basé sur NFS. La configuration du backend inclut des informations d'identification stockées dans un secret Kubernetes et fait référence à votre ONTAP SVM et à votre LIF de gestion.
Exemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par nom d'utilisateur et mot de passe (enregistrez sous
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-secretExemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous
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 definition (enregistrer sous
sc-nas.yaml):mountOptionsest un paramètre optionnel qui spécifie des options de montage supplémentaires pour les volumes NFS. L’ `nconnect`option permet plusieurs connexions TCP parallèles pour un même montage NFS, ce qui peut améliorer les performances pour les charges de travail à haut débit. La valeur par défaut est 1, mais elle peut être augmentée jusqu’à la limite maximale autorisée par le système ONTAP.
-
ONTAP prend en charge jusqu'à 16 connexions pour un seul montage NFS sur un client compatible nconnect. Trident transmet directement les options de montage aux nœuds de travail Kubernetes, alors choisissez une valeur prise en charge à la fois par le client NFS du nœud de travail et par ONTAP ; l’exemple suivant utilise quatre connexions.
# 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
Créez un TridentBackendConfig et un StorageClass pour le pilote ONTAP NAS Economy afin d'activer le provisionnement de stockage persistant basé sur NFS à l'aide de qtrees. La configuration du backend inclut des informations d'identification stockées dans un Secret Kubernetes et fait référence à votre ONTAP SVM et à votre LIF de gestion.
Exemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par nom d'utilisateur et mot de passe (enregistrez sous 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 definition (enregistrer sous 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
Créez un TridentBackendConfig et un StorageClass pour ONTAP SAN avec iSCSI afin d'activer le provisionnement de stockage bloc basé sur iSCSI. La configuration du backend utilise le pilote ontap-san et inclut des informations d'identification stockées dans un Secret Kubernetes. Le sanType paramètre utilise par défaut le protocole iSCSI s'il est omis.
Secret backend et fichier de configuration backend utilisant l'authentification par nom d'utilisateur et mot de passe (enregistrer sous 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
Secret backend et fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous 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 definition (enregistrer sous 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
Créez un TridentBackendConfig et un StorageClass pour ONTAP SAN avec NVMe afin d’activer le provisionnement de stockage bloc basé sur NVMe. La configuration du backend utilise le pilote ontap-san et inclut des informations d’identification stockées dans un Secret Kubernetes. Le sanType paramètre doit être défini sur nvme.
Secret backend et fichier de configuration backend utilisant l'authentification par nom d'utilisateur et mot de passe (enregistrer sous 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
Secret backend et fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous 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 definition (enregistrer sous 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
Consultez la documentation Trident pour obtenir des exemples supplémentaires de fichiers YAML et des informations sur les modes d'accès et les modes de volume pris en charge par les pilotes SAN et NAS.
Créez un fichier de configuration VolumeSnapshotClass
Créez une définition VolumeSnapshotClass. Cette configuration active les opérations basées sur les instantanés pour les volumes persistants.
VolumeSnapshotClass definition (enregistrer sous 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
Appliquez les fichiers de configuration à votre cluster
Appliquez les fichiers de configuration que vous avez créés lors des étapes précédentes au cluster vSphere Kubernetes Service en utilisant kubectl. Cela crée les secrets nécessaires, les configurations backend, les classes de stockage et la classe de snapshot dans votre cluster.
-
Appliquez les fichiers TridentBackendConfig et StorageClass pour chaque protocole que vous avez configuré.
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 -
Vérifiez que les ressources ont été créées avec succès.
Vérifiez les objets TridentBackendConfig :
kubectl get tbc -n tridentVérifiez les objets StorageClass :
kubectl get storageclassVérifiez VolumeSnapshotClass :
kubectl get volumesnapshotclass
Définissez les classes de stockage et d'instantanés Trident par défaut
Définissez les classes StorageClass et VolumeSnapshotClass de Trident comme valeurs par défaut dans le cluster vSphere Kubernetes Service.
-
Définissez le Trident StorageClass par défaut.
Définissez un StorageClass pris en charge par Trident comme valeur par défaut du cluster afin que les PersistentVolumeClaims l'utilisent automatiquement lorsqu'aucune classe de stockage n'est spécifiée.
Assurez-vous qu'une seule StorageClass soit définie par défaut. Si une autre StorageClass est déjà définie par défaut, définissez son annotation sur
false.Depuis l'interface de ligne de commande :
kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' -
Définissez la VolumeSnapshotClass Trident par défaut.
Définissez un VolumeSnapshotClass pris en charge par Trident comme valeur par défaut du cluster afin d’activer les opérations basées sur les instantanés pour les volumes persistants. Cela garantit que les VolumeSnapshots utilisent automatiquement le pilote CSI Trident lorsqu’aucune classe d’instantané n’est spécifiée.
Assurez-vous qu'une seule VolumeSnapshotClass soit définie par défaut. Si une autre VolumeSnapshotClass est déjà définie par défaut, définissez son annotation sur
false.Depuis l'interface de ligne de commande :
kubectl patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'
Utilisez les revendications de volumes persistants Kubernetes pour demander du stockage pour les charges de travail
Trident provisionne automatiquement les volumes nécessaires à partir du stockage NetApp backend. Consultez "Déployez des charges de travail avec un stockage persistant" pour des exemples de déploiement d'une charge de travail avec des PVC dans un cluster VKS.