Bereitstellung des FSx-für-Lustre-Treibers - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Bereitstellung des FSx-für-Lustre-Treibers

In diesem Thema erfahren Sie, wie Sie den FSx-für-Lustre-CSI-Treiber für Ihren Amazon-EKS-Cluster bereitstellen und überprüfen, ob er funktioniert. Wir empfehlen die neueste Version des Treibers zu verwenden. Verfügbare Versionen finden Sie in der Kompatibilitätsmatrix der CSI-Spezifikation auf GitHub.

Anmerkung

Der Treiber wird in Fargate oder Amazon EKS Hybrid Nodes nicht unterstützt.

Detaillierte Beschreibungen der verfügbaren Parameter und vollständige Beispiele, welche die Feature des Treibers demonstrieren, finden Sie im Projekt Treiber für FSx für Lustre Container Storage Interface (CSI) auf GitHub.

Voraussetzungen

  • Einen vorhandenen -Cluster.

  • Das EKS-Add-On für Amazon FSx CSI-Treiber erfordert den EKS Pod Identity Agent für die Authentifizierung. Ohne diese Komponente schlägt das Add-On mit dem Fehler Amazon EKS Pod Identity agent is not installed in the cluster fehl, wodurch Volume-Operationen verhindert werden. Installieren Sie den Pod Identity Agent vor oder nach der Bereitstellung des FSx-CSI-Treiber-Add-Ons. Weitere Informationen finden Sie unter Einrichtung des Amazon-EKS-Pod-Identity-Agenten.

  • Version 2.12.3 oder höher oder die Version 1.27.160 oder höher der AWS-Befehlszeilenschnittstelle (AWS-CLI), die auf Ihrem Gerät oder in AWS CloudShell installiert und konfiguriert sein muss. Um Ihre aktuelle Version zu überprüfen, verwenden Sie aws --version | cut -d / -f2 | cut -d ' ' -f1. Paket-Manager wie yum, apt-get oder Homebrew für macOS sind oft mehrere Versionen hinter der neuesten Version der AWS-CLI. Um die neueste Version zu installieren, lesen Sie Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch zur AWS-Befehlszeilenschnittstelle. Die in AWS CloudShell installierte AWS-CLI-Version kann auch mehrere Versionen hinter der neuesten Version liegen. Informationen zum Aktualisieren finden Sie unter Installieren der AWS CLI in Ihrem Stammverzeichnis im AWS-CloudShell-Benutzerhandbuch.

  • Version 0.214.0 oder höher des auf Ihrem Gerät oder in AWS CloudShell installierten eksctl-Befehlszeilen-Tools. Informationen zum Installieren und Aktualisieren von eksctl finden Sie in der Dokumentation zu eksctl unter Installation.

  • Das kubectl-Befehlszeilen-Tool ist auf Ihrem Gerät oder in AWS CloudShell installiert. Die Version kann mit der Kubernetes-Version Ihres Clusters identisch sein oder bis zu einer Nebenversion älter oder neuer sein. Wenn Ihre Clusterversion beispielsweise 1.29 ist, können Sie kubectl-Version 1.28, 1.29, oder 1.30 damit verwenden. Informationen zum Installieren oder Aktualisieren von kubectl finden Sie unter kubectl und eksctl einrichten.

Schritt 1: Erstellen einer IAM-Rolle

Das Amazon-FSx-CSI-Plugin benötigt IAM-Berechtigungen, um in Ihrem Namen AWS-API-Aufrufe zu tätigen.

Anmerkung

Pods haben Zugriff auf die Berechtigungen, die der IAM-Rolle zugewiesen sind, es sei denn, Sie blockieren den Zugriff auf IMDS. Weitere Informationen finden Sie unter Amazon-EKS-Cluster mit bewährten Methoden sichern.

Das folgende Verfahren zeigt Ihnen, wie Sie eine IAM-Rolle erstellen und ihr die von AWS verwaltete Richtlinie hinzufügen.

  1. Erstellen Sie eine IAM-Rolle und fügen Sie die AWS-verwaltete IAM-Richtlinie mit dem folgenden Befehl an. Ersetzen Sie my-cluster durch den Namen des Clusters, den Sie verwenden möchten. Der Befehl stellt einen AWS-CloudFormation-Stack bereit, der eine IAM-Rolle erstellt und ihr die IAM-Richtlinie anfügt.

    eksctl create iamserviceaccount \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_FSx_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \ --approve

    Beim Erstellen des Servicekontos werden Ihnen mehrere Ausgabezeilen angezeigt. Die letzten Ausgabezeilen ähneln den folgenden.

    [ℹ] 1 task: { 2 sequential sub-tasks: { create IAM role for serviceaccount "kube-system/fsx-csi-controller-sa", create serviceaccount "kube-system/fsx-csi-controller-sa", } } [ℹ] building iamserviceaccount stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] deploying stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] waiting for CloudFormation stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa"

    Notieren Sie sich den Namen des bereitgestellten AWS-CloudFormation-Stacks. In der vorigen Beispielausgabe lautet der Name des Stacks eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.

Nachdem Sie die IAM-Rolle des Amazon-FSx-CSI-Treibers erstellt haben, können Sie mit dem nächsten Abschnitt fortfahren. Wenn Sie das Add-on mit dieser IAM-Rolle bereitstellen, wird ein Servicekonto mit dem Namen fsx-csi-controller-sa erstellt und für die Verwendung konfiguriert. Das Servicekonto ist an ein Kubernetes clusterrole gebunden, dem die erforderlichen Kubernetes-Berechtigungen zugewiesen sind.

Schritt 2: Amazon-FSx-CSI-Treiber installieren

Wir empfehlen Ihnen, den Amazon-FSx-CSI-Treiber über das Amazon-EKS-Add-On zu installieren, um die Sicherheit zu verbessern und den Arbeitsaufwand zu reduzieren. Wenn Sie ein Amazon-EKS-Add-on zu Ihrem Cluster hinzufügen möchten, lesen Sie Erstellung eines Amazon-EKS-Add-Ons. Weitere Informationen zu Add-ons finden Sie unter Amazon-EKS-Add-ons.

Wichtig

Bereits vorhandene Amazon-FSx-CSI-Treiberinstallationen im Cluster können zu Fehlern bei der Add-On-Installation führen. Wenn Sie versuchen, die Amazon-EKS-Add-On-Version zu installieren, während ein Nicht-EKS-FSx-CSI-Treiber vorhanden ist, schlägt die Installation aufgrund von Ressourcenkonflikten fehl. Verwenden Sie während der Installation das OVERWRITE-Flag, um dieses Problem zu beheben.

aws eks create-addon --addon-name aws-fsx-csi-driver --cluster-name my-cluster --resolve-conflicts OVERWRITE

Wenn Sie alternativ eine selbstverwaltete Installation des Amazon-FSx-CSI-Treibers wünschen, finden Sie weitere Informationen unter Installation auf GitHub.

Schritt 3: Speicherklasse, persistenter Volume-Anspruchs und Beispiel-App bereitstellen

In diesem Verfahren wird das GitHub-Repository Treiber für FSx for Lustre Container Storage Interface (CSI) verwendet, um ein dynamisch bereitgestelltes FSx-for-Lustre-Volume zu verwenden.

  1. Beachten Sie die Sicherheitsgruppe für Ihren Cluster. Sie können Sie in der AWS-Managementkonsole im Abschnitt Netzwerk anzeigen oder indem Sie den folgenden AWS-Befehl verwenden. Ersetzen Sie my-cluster durch den Namen des Clusters, den Sie verwenden möchten.

    aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  2. Erstellen Sie gemäß den im Benutzerhandbuch für Amazon FSx für Lustre unter Amazon-VPC-Sicherheitsgruppen aufgeführten Kriterien eine Sicherheitsgruppe für Ihr Amazon-FSx-Dateisystem. Als VPC wählen Sie die VPC Ihres Clusters aus, die im Abschnitt Networking (Netzwerk) gezeigt wird. Unter „the security groups associated with your Lustre clients“ (die mit Ihren Lustre-Clients verknüpften Sicherheitsgruppen) wählen Sie Ihre Cluster-Sicherheitsgruppe aus. Wenn Sie keine Regeln für ausgehenden Datenverkehr festlegen, können Sie den All traffic (gesamten Datenverkehr) erlauben.

  3. Laden Sie das Speicherklassen-Manifest mit dem folgenden Befehl herunter.

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
  4. Bearbeiten Sie den Parameterabschnitt in der Datei storageclass.yaml. Ersetzen Sie jeden Beispielwert durch Ihre eigenen Werte.

    parameters: subnetId: subnet-0eabfaa81fb22bcaf securityGroupIds: sg-068000ccf82dfba88 deploymentType: PERSISTENT_1 automaticBackupRetentionDays: "1" dailyAutomaticBackupStartTime: "00:00" copyTagsToBackups: "true" perUnitStorageThroughput: "200" dataCompressionType: "NONE" weeklyMaintenanceStartTime: "7:09:00" fileSystemTypeVersion: "2.12"
    • subnetId – Die Subnetz-ID, in der das Amazon-FSx-für-Lustre-Dateisystem erstellt werden soll. Amazon FSx für Lustre wird nicht in allen Availability Zones unterstützt. Öffnen Sie die Amazon FSx for Lustre-Konsole unter https://console.aws.amazon.com/fsx/, um zu bestätigen, dass sich das Subnetz, das Sie verwenden möchten, in einer unterstützten Availability Zone befindet. Das Subnetz kann Ihre Knoten enthalten oder ein anderes Subnetz oder eine andere VPC sein:

      • Sie können Knoten-Subnetze in der AWS-Managementkonsole überprüfen, indem Sie die Knotengruppe im Abschnitt Compute (Datenverarbeitung) auswählen.

      • Wenn das von Ihnen angegebene Subnetz nicht das Subnetz ist, in dem Knoten vorhanden sind, müssen die VPCs verbunden sein und Sie müssen sicherstellen, dass die erforderlichen Ports in Ihren Sicherheitsgruppen geöffnet sind.

    • securityGroupIds – Die ID der Sicherheitsgruppe, die Sie für das Dateisystem erstellt haben.

    • deploymentType (optional) – Der Bereitstellungstyp des Dateisystems. Gültige Werte sind SCRATCH_1, SCRATCH_2, PERSISTENT_1 und PERSISTENT_2. Weitere Informationen zu Bereitstellungstypen finden Sie unter Erstellen Sie Ihr Amazon-FSx-for-Lustre-Dateisystem.

    • weitere Parameter (optional) – Informationen zu weiteren Parametern finden Sie unter Edit StorageClass (StorageClass bearbeiten) auf GitHub.

  5. Erstellen Sie das Speicherklassen-Manifest.

    kubectl apply -f storageclass.yaml

    Eine Beispielausgabe sieht wie folgt aus.

    storageclass.storage.k8s.io/fsx-sc created
  6. Laden Sie das Manifest für den dauerhaften Volume-Anspruch herunter.

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml
  7. (Optional) Bearbeiten Sie die claim.yaml-Datei. Ändern Sie 1200Gi in einen der folgenden Inkrementwerte, basierend auf Ihren Speicheranforderungen und dem deploymentType, den Sie in einem vorherigen Schritt ausgewählt haben.

    storage: 1200Gi
    • SCRATCH_2 und PERSISTENT – 1.2 TiB, 2.4 TiB oder Schritte von 2,4 TiB über 2,4 TiB.

    • SCRATCH_1 – 1.2 TiB, 2.4 TiB, 3.6 TiB oder Schritte von 3,6 TiB über 3,6 TiB.

  8. Erstellen Sie den dauerhaften Volume-Anspruch.

    kubectl apply -f claim.yaml

    Eine Beispielausgabe sieht wie folgt aus.

    persistentvolumeclaim/fsx-claim created
  9. Vergewissern Sie sich, dass das Dateisystem bereitgestellt wurde.

    kubectl describe pvc

    Eine Beispielausgabe sieht wie folgt aus.

    Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]
    Anmerkung

    Der Status kann für 5-10 Minuten als Pending angezeigt werden, bevor er zu Bound wechselt. Fahren Sie nicht mit dem nächsten Schritt fort, bis der Status Bound ist. Wenn der Status länger als 10 Minuten Pending anzeigt, verwenden Sie die Warnmeldungen in den Events als Referenz zur Behebung von Problemen.

  10. Stellen Sie die Beispielanwendung bereit.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml
  11. Stellen Sie sicher, dass die Beispielanwendung ausgeführt wird.

    kubectl get pods

    Eine Beispielausgabe sieht wie folgt aus.

    NAME READY STATUS RESTARTS AGE fsx-app 1/1 Running 0 8s
  12. Überprüfen Sie, ob das Dateisystem ordnungsgemäß von der Anwendung aufgespielt wurde.

    kubectl exec -ti fsx-app -- df -h

    Eine Beispielausgabe sieht wie folgt aus.

    Filesystem Size Used Avail Use% Mounted on overlay 80G 4.0G 77G 5% / tmpfs 64M 0 64M 0% /dev tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup 192.0.2.0@tcp:/abcdef01 1.1T 7.8M 1.1T 1% /data /dev/nvme0n1p1 80G 4.0G 77G 5% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 6.9G 12K 6.9G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 3.8G 0 3.8G 0% /proc/acpi tmpfs 3.8G 0 3.8G 0% /sys/firmware
  13. Stellen Sie sicher, dass Daten von der Beispiel-App in das FSx-for-Lustre-Dateisystem geschrieben wurden.

    kubectl exec -it fsx-app -- ls /data

    Eine Beispielausgabe sieht wie folgt aus.

    out.txt

    Diese Beispielausgabe zeigt, dass die Beispiel-App erfolgreich die out.txt-Datei in das Dateisystem geschrieben hat.

Anmerkung

Stellen Sie vor dem Löschen des Clusters sicher, dass Sie das FSx-for-Lustre-Dateisystem löschen. Weitere Informationen finden Sie unter Bereinigen von Ressourcen im Benutzerhandbuch zu FSx for Lustre.

Leistungsoptimierung für FSx für Lustre

Bei der Verwendung von FSx für Lustre mit Amazon EKS können Sie die Leistung optimieren, indem Sie während der Knoten-Initialisierung Lustre-Optimierungen anwenden. Der empfohlene Ansatz besteht darin, Startvorlagen-Benutzerdaten zu verwenden, um eine konsistente Konfiguration auf allen Knoten sicherzustellen.

Diese Optimierungen umfassen:

  • Netzwerk- und RPC-Optimierungen

  • Lustre-Modulverwaltung

  • LRU-Abstimmungen (Lock Resource Unit)

  • Einstellungen für die Client-Cache-Steuerung

  • RPC-Steuerungen für OST und MDC

Für detaillierte Anweisungen zur Implementierung dieser Leistungsoptimierungen: