Konfigurieren einer Speicherklasse
Der "Kubernetes StorageClass-Objekt" identifiziert einen Provisioner und weist den Provisioner an, wie Volumes bereitgestellt werden sollen. In diesem Abschnitt wird gezeigt, wie Sie ein Kubernetes-StorageClass-Objekt konfigurieren, das Trident als Provisioner angibt.
Erstellen Sie ein StorageClass-Objekt
Wenn Sie eine StorageClass für FSx for ONTAP erstellen, erstellt Trident automatisch die Backend-Konfiguration.
|
|
Wenn Sie das Speicher-Backend manuell konfigurieren möchten, lesen Sie bitte den [create-a-kubernetes-storageclass-without-automatic-backend-configuration] Abschnitt, um zu erfahren, wie Sie das Trident-Backend und die Speicherklasse separat erstellen. |
Geben Sie die erforderlichen StorageClass-Parameter an
Die folgenden drei Parameter müssen beim Erstellen einer StorageClass definiert werden:
| Parameter | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
|
Ja. |
Zeichenfolge |
FSx für NetApp ONTAP filesystem ID |
|
Ja. |
Zeichenfolge |
Trident-Speichertreiber (zum Beispiel, |
|
Ja. |
Zeichenfolge |
Name des Kubernetes-Secrets, das die FSx for ONTAP Anmeldeinformationen enthält |
Optionale Parameter angeben
Sie können optionale Backend-Parameter über die StorageClass übergeben. Definieren Sie alle optionalen Werte als Zeichenketten im StorageClass parameters Abschnitt. Eine vollständige Liste der Backend-Parameter finden Sie unter: FSx für NetApp ONTAP Backend-Konfiguration.
Beispiel-StorageClass-Konfigurationsdateien.
Das folgende Beispiel zeigt eine StorageClass, die eine automatische Backend-Konfiguration auslöst.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-fsx-demo
annotations:
description: "Demo StorageClass for FSx for NetApp ONTAP"
provisioner: csi.trident.netapp.io
parameters:
fsxFilesystemID: "fs-0abc123"
storageDriverName: "ontap-nas"
credentialsName: trident-fsx-credentials
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
{
"apiVersion": "storage.k8s.io/v1",
"kind": "StorageClass",
"metadata": {
"name": "ontap-fsx-demo",
"annotations": {
"description": "Demo StorageClass for FSx for NetApp ONTAP"
}
},
"provisioner": "csi.trident.netapp.io",
"parameters": {
"fsxFilesystemID": "fs-0abc123",
"storageDriverName": "ontap-nas",
"credentialsName": "trident-fsx-credentials"
},
"allowVolumeExpansion": true,
"reclaimPolicy": "Delete",
"volumeBindingMode": "Immediate"
}
Erstelle die StorageClass
Sobald Sie Ihre Konfigurationsdatei erstellt haben, führen Sie den folgenden Befehl aus, um die Speicherklasse zu erstellen.
kubectl create -f storage-class-ontapnas.yaml
Sie sollten nun eine Basic-csi Storage-Klasse sowohl in Kubernetes als auch in Trident sehen, und Trident hätte die Pools auf dem Backend entdeckt haben sollen.
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
Nachdem Sie die StorageClass angewendet haben, erstellt Trident das Backend automatisch. Sie können dann PersistentVolumeClaims erstellen, die auf diese StorageClass verweisen.
Überprüfen Sie den Status der Backend-Konfiguration
Trident speichert das Ergebnis der Backend-Erstellung in StorageClass-Annotationen.
| Anmerkung | Beschreibung |
|---|---|
|
Konfigurationsergebnis ( |
|
Detaillierte Status- oder Fehlermeldung |
|
Name der internen Konfigurator-Ressource |
|
Gibt an, dass die StorageClass von Trident verwaltet wird |
|
Für dieses Backend erstellte Speicherpools |
Um den Status zu überprüfen, führen Sie Folgendes aus:
kubectl get storageclass ontap-fsx-demo -o yaml
Bestätigen Sie, dass trident.netapp.io/configuratorStatus auf Success gesetzt ist. Wenn der Wert Failure ist, überprüfen Sie trident.netapp.io/configuratorMessage auf den Fehler.
Fügen Sie zusätzliche FSxN-Dateisysteme hinzu
Wenn Sie zusätzliche Speicherkapazität benötigen, während Sie weiterhin dieselbe StorageClass verwenden, fügen Sie zusätzliche FSxN-Dateisystem-IDs hinzu.
Bearbeiten Sie die StorageClass und fügen Sie die folgende Anmerkung hinzu:
metadata:
annotations:
trident.netapp.io/additionalFsxNFileSystemID: '["fs-xxxxxxxxxxxxxxxxxx"]'
Nachdem Sie die Änderung angewendet haben, aktualisiert Trident die Backend-Konfiguration und die StorageClass-Annotationen.
Betriebliche Überlegungen und Einschränkungen
-
Das Löschen einer StorageClass, die als automatische Backend-Konfiguration verwendet wird, löscht in der Regel auch das zugehörige Trident-Backend. Dies kann die Speicherkonnektivität beeinträchtigen und laufende Workloads unterbrechen. Prüfen Sie die Auswirkungen, bevor Sie eine verwaltete StorageClass löschen.
-
Die automatische Backend-Konfiguration wird nur für AWS FSx für NetApp ONTAP unterstützt.
Erstellen Sie eine Kubernetes StorageClass ohne automatische Backend-Konfiguration
Wenn Sie das Trident Backend und StorageClass separat erstellen möchten, folgen Sie diesen Schritten.
Verstehen Sie, wie die automatische Backend-Konfiguration funktioniert
Trident leitet die Backend-Konfiguration aus der StorageClass-Definition ab. Wenn Sie die StorageClass anwenden, validiert Trident die erforderlichen Parameter, erstellt das Backend und versieht die StorageClass mit dem Status.
Trident erstellt die VolumeSnapshotClass nur einmal. Trident verwendet dieselbe VolumeSnapshotClass für nachfolgende StorageClasses wieder.
Erstelle das Trident Backend
Um ein Trident-Backend zu erstellen, benötigen Sie eine Konfigurationsdatei im JSON- oder YAML-Format. Die Datei muss den gewünschten Speichertyp (NAS oder SAN), das Dateisystem, die SVM, von der Sie es beziehen möchten, und die Authentifizierungsmethode angeben. Das folgende Beispiel zeigt, wie Sie NAS-basierten Speicher definieren und mithilfe eines AWS-Secrets die Anmeldeinformationen für die SVM speichern, die Sie verwenden möchten:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
backendName: tbc-ontap-nas
svm: svm-name
aws:
fsxFilesystemID: fs-xxxxxxxxxx
credentials:
name: "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name"
type: awsarn
{
"apiVersion": "trident.netapp.io/v1",
"kind": "TridentBackendConfig",
"metadata": {
"name": "backend-tbc-ontap-nas"
"namespace": "trident"
},
"spec": {
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "tbc-ontap-nas",
"svm": "svm-name",
"aws": {
"fsxFilesystemID": "fs-xxxxxxxxxx"
},
"managementLIF": null,
"credentials": {
"name": "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name",
"type": "awsarn"
}
}
}
FSX für ONTAP-Treiber Details
Sie können Trident mithilfe der folgenden Treiber in Amazon FSX for NetApp ONTAP integrieren:
| Treibername | Beschreibung |
|---|---|
|
Jedes bereitgestellte PV ist eine LUN innerhalb eines eigenen Amazon FSx for NetApp ONTAP-Volumes. Empfohlen für Blockspeicher. |
|
Jedes bereitgestellte PV ist ein vollständiges Amazon FSx for NetApp ONTAP Volume. Empfohlen für NFS und SMB. |
|
Jedes bereitgestellte PV ist eine LUN mit einer konfigurierbaren Anzahl von LUNs pro Amazon FSx for NetApp ONTAP volume. |
|
Jedes bereitgestellte PV ist ein Qtree, wobei die Anzahl der Qtrees pro Amazon FSx for NetApp ONTAP Volume konfigurierbar ist. |
|
Jedes bereitgestellte PV ist ein vollständiges Amazon FSx for NetApp ONTAP FlexGroup Volume. |
Informationen zum Treiber finden Sie unter "NAS-Treiber" Und "SAN-Treiber".
Erstellen Sie das Backend
Nach dem Erstellen der Konfigurationsdatei führen Sie die folgenden Befehle aus, um die Trident Backend-Konfiguration (TBC) zu erstellen und zu validieren:
-
Erstellen Sie die Trident-Backend-Konfiguration (TBC) aus der yaml-Datei, und führen Sie den folgenden Befehl aus:
kubectl create -f backendconfig.yaml -n tridenttridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
-
Überprüfen Sie, ob die Trident-Backend-Konfiguration (TBC) erfolgreich erstellt wurde:
Kubectl get tbc -n tridentNAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-nas tbc-ontap-nas 933e0071-66ce-4324-b9ff-f96d916ac5e9 Bound Success
Weitere Informationen zu anderen Konfigurationsoptionen finden Sie im [Backend-advanced-configuration-and-examples] Abschnitt unten.
Konfigurieren einer Storage Class ohne automatische Backend-Konfiguration
Nachfolgend finden Sie Beispiele für Speicherklassenkonfigurationen zur Verwendung mit Trident und FSx für ONTAP.
Speicherklasse für NFS
Sie können dieses Beispiel verwenden, um StorageClass für Volumes mit NFS einzurichten (eine vollständige Liste der Attribute finden Sie im Abschnitt „Trident-Attribute“ weiter unten):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
provisioningType: "thin"
snapshots: "true"
Speicherklasse für iSCSI
Verwenden Sie dieses Beispiel, um StorageClass für Volumes mit iSCSI einzurichten:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
provisioningType: "thin"
snapshots: "true"
Speicherklasse mit NFSv3 und AWS Bottlerocket
Fügen Sie zum Bereitstellen von NFSv3 Volumes auf AWS Bottlerocket die erforderliche Storage-Klasse hinzu mountOptions:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
mountOptions:
- nfsvers=3
- nolock
Trident StorageClass-Attribute
Diese Parameter bestimmen, welche in Trident gemanagten Storage Pools zur Bereitstellung von Volumes eines bestimmten Typs verwendet werden sollten.
| Attribut | Typ | Werte | Angebot | Anfrage | Unterstützt von |
|---|---|---|---|---|---|
Medien1 |
Zeichenfolge |
hdd, Hybrid, ssd |
Pool enthält Medien dieser Art. Beides bedeutet Hybrid |
Medientyp angegeben |
ontap-nas, ontap-nas-Economy, ontap-nas-Flexgroup, ontap-san, solidfire-san |
Bereitstellungstyp |
Zeichenfolge |
Dünn, dick |
Pool unterstützt diese Bereitstellungsmethode |
Bereitstellungsmethode angegeben |
Thick: All ONTAP; Thin: Alle ONTAP und solidfire-san |
BackendType |
Zeichenfolge |
ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san, azure-netapp-files, ontap-san-economy |
Pool gehört zu dieser Art von Backend |
Back-End angegeben |
Alle Treiber |
Snapshots |
bool |
Richtig, falsch |
Pool unterstützt Volumes mit Snapshots |
Volume mit aktivierten Snapshots |
ontap-nas, ontap-san, solidfire-san |
Klone |
bool |
Richtig, falsch |
Pool unterstützt das Klonen von Volumes |
Volume mit aktivierten Klonen |
ontap-nas, ontap-san, solidfire-san |
Verschlüsselung |
bool |
Richtig, falsch |
Pool unterstützt verschlüsselte Volumes |
Volume mit aktivierter Verschlüsselung |
ontap-nas, ontap-nas-Economy, ontap-nas-Flexgroups, ontap-san |
IOPS |
Int |
Positive Ganzzahl |
Pool kann IOPS in diesem Bereich garantieren |
Volume hat diese IOPS garantiert |
solidfire-san |
1: Wird von ONTAP Select oder FSx für ONTAP-Systeme nicht unterstützt
Einzelheiten zur Interaktion von Storage-Klassen mit den PersistentVolumeClaim Parametern und zur Steuerung, wie Trident Volumes provisioniert, finden Sie unter"Kubernetes und Trident Objekte".
Erstellen Sie die Speicherklasse
Sobald Sie die StorageClass konfiguriert haben, können Sie sie in Kubernetes erstellen.
-
Verwenden Sie dieses Objekt von Kubernetes
kubectlUm sie in Kubernetes zu erstellen.kubectl create -f storage-class-ontapnas.yaml -
Sie sollten nun eine Basic-csi Storage-Klasse sowohl in Kubernetes als auch in Trident sehen, und Trident hätte die Pools auf dem Backend entdeckt haben sollen.
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
Bereitstellung von SMB-Volumina
Sie können SMB-Volumes mithilfe des ontap-nas Treibers bereitstellen. Dazu müssen Sie jedoch die folgenden Schritte ausführen: "Vorbereitung zur Bereitstellung von SMB Volumes".
Erweiterte Back-End-Konfiguration und Beispiele
Die Back-End-Konfigurationsoptionen finden Sie in der folgenden Tabelle:
| Parameter | Beschreibung | Beispiel |
|---|---|---|
|
Immer 1 |
|
|
Name des Speichertreibers |
|
|
Benutzerdefinierter Name oder das Storage-Backend |
Treibername + „_“ + DatenLIF |
|
IP-Adresse eines Clusters oder einer SVM-Management-LIF Ein vollständig qualifizierter Domain-Name (FQDN) kann angegeben werden. Kann so eingestellt werden, dass IPv6-Adressen verwendet werden, wenn Trident mit dem IPv6-Flag installiert wurde. IPv6-Adressen müssen in eckigen Klammern definiert werden, z. B. [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. Wenn Sie den im |
„10.0.0.1“, „[2001:1234:abcd::fefe]“ |
|
IP-Adresse des Protokoll-LIF. ONTAP NAS-Treiber: NetApp empfiehlt, dataLIF anzugeben. Falls nicht angegeben, ruft Trident dataLIFs vom SVM ab. Sie können einen vollqualifizierten Domänennamen (FQDN) für die NFS-Mount-Operationen angeben, sodass Sie einen Round-Robin-DNS für den Lastausgleich über mehrere dataLIFs erstellen können. Kann nach der ersten Einstellung geändert werden. ONTAP SAN-Treiber: Für iSCSI nicht angeben. Trident verwendet ONTAP Selective LUN Map, um die für den Aufbau einer Multipath-Sitzung benötigten iSCSI-LIFs zu ermitteln. Es wird eine Warnung ausgegeben, wenn dataLIF explizit definiert wird. Kann so eingestellt werden, dass IPv6-Adressen verwendet werden, wenn Trident mit dem IPv6-Flag installiert wurde. IPv6-Adressen müssen in eckigen Klammern definiert werden, zum Beispiel [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. |
|
|
Aktivieren Sie die automatische Erstellung von Exportrichtlinien und aktualisieren Sie [Boolean]. Mithilfe der |
|
|
Liste der CIDRs, nach denen die Node-IPs von Kubernetes gegen gefiltert werden sollen, wenn |
„[„0.0.0.0/0“, „:/0“]“ |
|
Satz willkürlicher JSON-formatierter Etiketten für Volumes |
„“ |
|
Base64-codierter Wert des Clientzertifikats. Wird für zertifikatbasierte Authentifizierung verwendet |
„“ |
|
Base64-kodierte Wert des privaten Client-Schlüssels. Wird für zertifikatbasierte Authentifizierung verwendet |
„“ |
|
Base64-kodierte Wert des vertrauenswürdigen CA-Zertifikats. Optional Wird für die zertifikatbasierte Authentifizierung verwendet. |
„“ |
|
Benutzername zum Herstellen einer Verbindung zum Cluster oder zur SVM. Wird für die Anmeldeinformationsbasierte Authentifizierung verwendet. Beispiel: Vsadmin. |
|
|
Passwort für die Verbindung mit dem Cluster oder der SVM Wird für die Anmeldeinformationsbasierte Authentifizierung verwendet. |
|
|
Zu verwendende Storage Virtual Machine |
Abgeleitet, wenn eine SVM Management LIF angegeben ist. |
|
Das Präfix wird beim Bereitstellen neuer Volumes in der SVM verwendet. Kann nach der Erstellung nicht geändert werden. Um diesen Parameter zu aktualisieren, müssen Sie ein neues Backend erstellen. |
|
|
Nicht für Amazon FSX für NetApp ONTAP angeben. Die angegebenen |
Verwenden Sie ihn nicht. |
|
Bereitstellung fehlgeschlagen, wenn die angeforderte Volume-Größe über diesem Wert liegt. Beschränkt darüber hinaus die maximale Größe der Volumes, die es über qtrees und LUNs verwaltet, und |
„“ (nicht standardmäßig durchgesetzt) |
|
Die maximale Anzahl an LUNs pro FlexVol volume muss im Bereich [50, 200] liegen. Nur SAN |
„ |
|
Fehler-Flags bei der Fehlerbehebung beheben. Beispiel, {„API“:false, „method“:true} |
Null |
|
Kommagetrennte Liste von NFS-Mount-Optionen. Die Mount-Optionen für persistente Kubernetes-Volumes werden normalerweise in Storage-Klassen angegeben. Wenn jedoch keine Mount-Optionen in einer Storage-Klasse angegeben sind, verwendet Trident die Mount-Optionen, die in der Konfigurationsdatei des Storage-Backends angegeben sind. Wenn in der Storage-Klasse oder in der Konfigurationsdatei keine Mount-Optionen angegeben sind, legt Trident keine Mount-Optionen auf einem zugeordneten persistenten Volume fest. |
„“ |
|
Konfiguration der Erstellung von NFS- oder SMB-Volumes Die Optionen lauten |
|
|
Maximale Qtrees pro FlexVol volume, muss im Bereich [50, 300] liegen |
|
|
Sie können eine der folgenden Optionen angeben: Den Namen einer SMB-Freigabe, die mit der Microsoft Verwaltungskonsole oder der ONTAP-CLI erstellt wurde, oder einen Namen, mit dem Trident die SMB-Freigabe erstellen kann. Dieser Parameter ist für Amazon FSX for ONTAP Back-Ends erforderlich. |
|
|
Boolescher Parameter zur Verwendung von ONTAP REST-APIs. Wenn auf festgelegt |
|
|
In der Konfigurationsdatei für AWS FSX für ONTAP können Sie Folgendes angeben: |
|
|
Geben Sie die FSX SVM-Zugangsdaten an, die in AWS Secrets Manager gespeichert werden sollen. - |
Back-End-Konfigurationsoptionen für die Bereitstellung von Volumes
Sie können die Standardbereitstellung mit diesen Optionen im steuern defaults Abschnitt der Konfiguration. Ein Beispiel finden Sie unten in den Konfigurationsbeispielen.
| Parameter | Beschreibung | Standard |
|---|---|---|
|
Speicherplatzzuweisung für LUNs |
|
|
Modus für Speicherplatzreservierung; „none“ (Thin) oder „Volume“ (Thick) |
|
|
Die Snapshot-Richtlinie zu verwenden |
|
|
QoS-Richtliniengruppe zur Zuweisung für erstellte Volumes Wählen Sie eine der qosPolicy oder adaptiveQosPolicy pro Storage-Pool oder Backend. Für die Verwendung von QoS-Richtliniengruppen mit Trident ist ONTAP 9 8 oder höher erforderlich. Sie sollten eine nicht gemeinsam genutzte QoS-Richtliniengruppe verwenden und sicherstellen, dass die Richtliniengruppe auf jede Komponente einzeln angewendet wird. Eine Shared-QoS-Richtliniengruppe erzwingt die Obergrenze für den Gesamtdurchsatz aller Workloads. |
„“ |
|
Adaptive QoS-Richtliniengruppe mit Zuordnung für erstellte Volumes Wählen Sie eine der qosPolicy oder adaptiveQosPolicy pro Storage-Pool oder Backend. Nicht unterstützt durch ontap-nas-Ökonomie |
„“ |
|
Prozentsatz des für Snapshots reservierten Volumes „0“ |
Wenn |
|
Teilen Sie einen Klon bei der Erstellung von seinem übergeordneten Objekt auf |
|
|
Aktivieren Sie NetApp Volume Encryption (NVE) auf dem neuen Volume, Standardeinstellung ist |
|
|
Aktivieren Sie die LUKS-Verschlüsselung. Siehe "Linux Unified Key Setup (LUKS) verwenden". Nur SAN |
„“ |
|
Tiering-Richtlinie für die Nutzung |
|
|
Modus für neue Volumes. Leere leer für SMB Volumen. |
„“ |
|
Sicherheitstyp für neue Volumes. NFS unterstützt |
NFS-Standard ist |