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 |
Zeichenkette |
FSx für NetApp ONTAP filesystem ID |
|
Ja |
Zeichenkette |
Trident-Speichertreiber (zum Beispiel, |
|
Ja |
Zeichenkette |
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-Class sowohl in Kubernetes als auch in Trident sehen, und Trident sollte die Pools im Backend erkannt haben.
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 for ONTAP-Treiberdetails
Sie können Trident mit Amazon FSx für NetApp ONTAP mithilfe der folgenden Treiber 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. |
Weitere Informationen zum Treiber finden Sie unter "NAS-Treiber" und "SAN-Treiber".
Das Backend erstellen
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 eine Trident-Backend-Konfiguration (TBC) aus einer 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
Um NFSv3-Volumes auf AWS Bottlerocket bereitzustellen, fügen Sie die erforderlichen mountOptions zur Speicherklasse hinzu:
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 legen fest, welche von Trident verwalteten Speicherpools zur Bereitstellung von Volumes eines bestimmten Typs verwendet werden sollen.
| Attribut | Typ | Werte | Angebot | Anfrage | Unterstützt von |
|---|---|---|---|---|---|
Medien1 |
Zeichenkette |
hdd, hybrid, ssd |
Pool enthält Medien dieses Typs; hybrid bedeutet beides |
Medientyp angegeben |
ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san |
provisioningType |
Zeichenkette |
dünn, dick |
Pool unterstützt diese Bereitstellungsmethode |
Bereitstellungsmethode angegeben |
dick: alle ontap; dünn: alle ontap & solidfire-san |
backendType |
Zeichenkette |
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 |
Backend angegeben |
Alle Treiber |
Momentaufnahmen |
bool |
wahr, falsch |
Pool unterstützt Volumes mit Snapshots |
Volume mit aktivierten Snapshots |
ontap-nas, ontap-san, solidfire-san |
Klone |
bool |
wahr, falsch |
Pool unterstützt das Klonen von Volumes |
Volume mit aktivierten Klonen |
ontap-nas, ontap-san, solidfire-san |
Verschlüsselung |
bool |
wahr, 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 ganze Zahl |
Pool ist in der Lage, IOPS in diesem Bereich zu garantieren |
Volume garantiert diese IOPS |
solidfire-san |
1: Wird von ONTAP Select oder FSx für ONTAP-Systeme nicht unterstützt
Siehe "Kubernetes- und Trident-Objekte" für Details dazu, wie Storage-Klassen mit dem PersistentVolumeClaim interagieren und Parameter zur Steuerung, wie Trident Volumes bereitstellt.
Erstellen Sie die Speicherklasse
Sobald Sie die StorageClass konfiguriert haben, können Sie sie in Kubernetes erstellen.
-
Dies ist ein Kubernetes-Objekt, daher verwenden Sie
kubectl, um es in Kubernetes zu erstellen.kubectl create -f storage-class-ontapnas.yaml -
Sie sollten nun eine basic-csi Storage-Class sowohl in Kubernetes als auch in Trident sehen, und Trident sollte die Pools im Backend erkannt haben.
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
SMB-Volumen bereitstellen
Sie können SMB-Volumes mithilfe des ontap-nas Treibers bereitstellen. Dazu müssen Sie jedoch die folgenden Schritte ausführen: "Bereiten Sie die Bereitstellung von SMB-Volumes vor".
Erweiterte Backend-Konfiguration und Beispiele
Siehe die folgende Tabelle für die Backend-Konfigurationsoptionen:
| Parameter | Beschreibung | Beispiel |
|---|---|---|
|
Immer 1 |
|
|
Name des Speichertreibers |
|
|
Benutzerdefinierter Name oder das Speicher-Backend |
Treibername + "_" + dataLIF |
|
IP-Adresse eines Clusters oder einer SVM-Management-LIF. Ein vollqualifizierter Domänenname (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 angegeben werden, zum Beispiel [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. Wenn Sie die |
"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. Ein vollqualifizierter Domainname (FQDN) kann für die NFS-Mount-Operationen angegeben werden, wodurch die Erstellung eines Round-Robin-DNS zur Lastverteilung über mehrere dataLIFs ermöglicht wird. Kann nach der Ersteinrichtung 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. Eine Warnung wird ausgegeben, wenn dataLIF explizit definiert ist. Kann so eingestellt werden, dass IPv6-Adressen verwendet werden, wenn Trident mit dem IPv6-Flag installiert wurde. IPv6-Adressen müssen in eckigen Klammern angegeben werden, zum Beispiel [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. |
|
|
Automatische Erstellung und Aktualisierung von Exportrichtlinien aktivieren [Boolean]. Mit den Optionen |
|
|
Liste der CIDRs, anhand derer die Node-IPs von Kubernetes gefiltert werden, wenn |
"["0.0.0.0/0", "::/0"]" |
|
Satz beliebiger JSON-formatierter Bezeichnungen, die auf Volumes angewendet werden sollen |
"" |
|
Base64-kodierter Wert des Clientzertifikats. Wird für zertifikatbasierte Authentifizierung verwendet |
"" |
|
Base64-kodierter Wert des privaten Client-Schlüssels. Wird für zertifikatbasierte Authentifizierung verwendet |
"" |
|
Base64-kodierter Wert des vertrauenswürdigen CA-Zertifikats. Optional. Wird für zertifikatbasierte Authentifizierung verwendet. |
"" |
|
Benutzername für die Verbindung zum Cluster oder zur SVM. Wird für die anmeldeinformationsbasierte Authentifizierung verwendet. Zum Beispiel vsadmin. |
|
|
Passwort zur Verbindung mit dem Cluster oder der SVM. Wird für die anmeldeinformationsbasierte Authentifizierung verwendet. |
|
|
Zu verwendende Storage Virtual Machine |
Wird abgeleitet, wenn ein SVM managementLIF angegeben ist. |
|
Präfix, das beim Bereitstellen neuer Volumes in der SVM verwendet wird. Kann nach der Erstellung nicht mehr 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 bereitgestellten |
Nicht verwenden. |
|
Die Bereitstellung schlägt fehl, wenn die angeforderte Volume-Größe diesen Wert überschreitet. Außerdem wird die maximale Größe der von ihr verwalteten Volumes für qtrees und LUNs beschränkt, und die |
"" (wird nicht standardmäßig erzwungen) |
|
Maximale LUNs pro FlexVol volume, muss im Bereich [50, 200] liegen. Nur SAN. |
“100” |
|
Debug-Flags zur Verwendung bei der Fehlersuche. Beispiel, {"api":false, "method":true} Verwenden Sie |
null |
|
Kommagetrennte Liste von NFS-Mountoptionen. Die Mountoptionen für persistente Kubernetes-Volumes werden normalerweise in Speicherklassen angegeben, aber wenn keine Mountoptionen in einer Speicherklasse angegeben sind, verwendet Trident die Mountoptionen, die in der Konfigurationsdatei des Storage-Backends angegeben sind. Wenn weder in der Speicherklasse noch in der Konfigurationsdatei Mountoptionen angegeben sind, setzt Trident keine Mountoptionen für das zugehörige persistente Volume. |
"" |
|
Konfigurieren Sie die Erstellung von NFS- oder SMB-Volumes. Optionen sind |
|
|
Maximale Qtrees pro FlexVol volume, muss im Bereich [50, 300] liegen |
|
|
Sie können entweder den Namen einer SMB-Freigabe angeben, die mit der Microsoft Management Console oder ONTAP CLI erstellt wurde, oder einen Namen, damit Trident die SMB-Freigabe erstellen kann. Dieser Parameter ist für Amazon FSx for ONTAP Backends erforderlich. |
|
|
Boolescher Parameter zur Verwendung von ONTAP REST APIs. Wenn auf |
|
|
Sie können Folgendes in der Konfigurationsdatei für AWS FSx for ONTAP angeben: - |
|
|
Geben Sie die FSx SVM-Anmeldeinformationen an, die im AWS Secrets Manager gespeichert werden sollen. - |
Backend-Konfigurationsoptionen für die Bereitstellung von Volumes
Sie können die Standardbereitstellung mithilfe dieser Optionen im defaults Abschnitt der Konfiguration steuern. Ein Beispiel finden Sie in den unten stehenden Konfigurationsbeispielen.
| Parameter | Beschreibung | Standard |
|---|---|---|
|
Speicherplatzzuweisung für LUNs |
|
|
Platzreservierungsmodus; "none" (dünn) oder "volume" (dick) |
|
|
Zu verwendende Snapshot-Richtlinie |
|
|
QoS-Richtliniengruppe, die für erstellte Volumes zugewiesen werden soll. Wählen Sie eine der qosPolicy oder adaptiveQosPolicy pro Speicherpool oder Backend. Die Verwendung von QoS-Richtliniengruppen mit Trident erfordert ONTAP 9.8 oder höher. Sie sollten eine nicht gemeinsam genutzte QoS-Richtliniengruppe verwenden und sicherstellen, dass die Richtliniengruppe auf jedes einzelne Element angewendet wird. Eine gemeinsam genutzte QoS-Richtliniengruppe erzwingt die Obergrenze für den Gesamtdurchsatz aller Workloads. |
"" |
|
Adaptive QoS-Richtliniengruppe zur Zuweisung für erstellte Volumes. Wählen Sie eine der qosPolicy oder adaptiveQosPolicy pro Speicherpool oder Backend. Wird von ontap-nas-economy nicht unterstützt. |
"" |
|
Prozentsatz des für Snapshots reservierten Volumens "0" |
Wenn |
|
Trennen Sie einen Klon bei seiner Erstellung von seinem übergeordneten Objekt |
|
|
Aktivieren Sie NetApp Volume Encryption (NVE) auf dem neuen Volume; Standard ist |
|
|
LUKS-Verschlüsselung aktivieren. Siehe "Verwenden Sie Linux Unified Key Setup (LUKS)". Nur SAN. |
"" |
|
zu verwendende Tiering-Richtlinie |
|
|
Modus für neue Volumes. Für SMB-Volumes leer lassen. |
"" |
|
Sicherheitsstil für neue Volumes. NFS unterstützt |
NFS-Standard ist |