Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Speicher
Übersicht
Es gibt Szenarien, in denen Sie möglicherweise Anwendungen ausführen möchten, die Daten kurz- oder langfristig aufbewahren müssen. Für solche Anwendungsfälle können Volumes von Pods definiert und bereitgestellt werden, sodass ihre Container unterschiedliche Speichermechanismen nutzen können. Kubernetes unterstützt verschiedene Arten von Volumes
Kurzlebige Volumen
Ephemere Volumes eignen sich für Anwendungen, die vorübergehende lokale Volumes benötigen, bei denen jedoch keine Daten nach Neustarts dauerhaft gespeichert werden müssen. Beispiele hierfür sind Anforderungen an Scratch-Speicherplatz, Zwischenspeicherung und schreibgeschützte Eingabedaten wie Konfigurationsdaten und geheime Daten. Weitere Informationen zu kurzlebigen Kubernetes-Volumes finden Sie hier.
EBS-Volumes verwenden
Wir empfehlen, mit gp3
Amazon EC2 Instance Stores verwenden
Amazon EC2 Instance Stores bieten temporären Speicher auf Blockebene für Ihre EC2 Instances. Auf den von EC2 Instance-Speichern bereitgestellten Speicher kann über Festplatten zugegriffen werden, die physisch an die Hosts angeschlossen sind. Im Gegensatz zu Amazon EBS können Sie Instance-Speicher-Volumes nur anhängen, wenn die Instance gestartet wird, und diese Volumes existieren nur während der Lebensdauer der Instance. Sie können nicht getrennt und wieder an andere Instances angehängt werden. Sie können hier mehr über Amazon EC2 Instance Stores erfahren. Für das Volumen eines Instance-Speichers fallen keine zusätzlichen Gebühren an. Dadurch sind sie (Instance-Speicher-Volumes) kostengünstiger als allgemeine EC2 Instances mit großen EBS-Volumes.
Um lokale Speichervolumes in Kubernetes zu verwenden, sollten Sie die Festplatten anhand der EC2 Amazon-Benutzerdaten partitionieren, konfigurieren und formatieren, sodass Volumes wie HostPath
Beachten Sie, dass bei der Verwendung von Amazon EC2 Instance Store-Volumes das gesamte IOPS-Limit mit dem Host geteilt wird und Pods an einen bestimmten Host gebunden werden. Sie sollten Ihre Workload-Anforderungen gründlich prüfen, bevor Sie Amazon EC2 Instance Store-Volumes einführen.
Persistente Volumes
Kubernetes wird in der Regel mit der Ausführung von zustandslosen Anwendungen in Verbindung gebracht. Es gibt jedoch Szenarien, in denen Sie möglicherweise Microservices ausführen möchten, die persistente Daten oder Informationen von einer Anfrage zur nächsten beibehalten müssen. Datenbanken sind ein gängiges Beispiel für solche Anwendungsfälle. Pods und die darin enthaltenen Behälter oder Prozesse sind jedoch kurzlebig. Um Daten über die Lebensdauer eines Pods hinaus beizubehalten, können Sie PVs damit den Zugriff auf den Speicher an einem bestimmten Ort definieren, der unabhängig vom Pod ist. Die damit PVs verbundenen Kosten hängen stark von der Art des verwendeten Speichers und der Art der Nutzung durch Anwendungen ab.
Hier sind verschiedene Arten von Speicheroptionen aufgeführt, die Kubernetes PVs auf Amazon EKS unterstützen. Die unten beschriebenen Speicheroptionen sind Amazon EBS, Amazon EFS, Amazon FSx for Lustre, Amazon FSx for NetApp ONTAP.
Volumen im Amazon Elastic Block Store (EBS)
Amazon EBS-Volumes können als Kubernetes genutzt werden, PVs um Speichervolumes auf Blockebene bereitzustellen. Diese eignen sich gut für Datenbanken, die auf zufälligen Lese- und Schreibvorgängen basieren, sowie für durchsatzintensive Anwendungen, die lange, kontinuierliche Lese- und Schreibvorgänge ausführen. Der Amazon Elastic Block Store Container Storage Interface (CSI) -Treiber ermöglicht es Amazon EKS-Clustern, den Lebenszyklus von Amazon EBS-Volumes für persistente Volumes zu verwalten. Das Container Storage Interface ermöglicht und erleichtert die Interaktion zwischen Kubernetes und einem Speichersystem. Wenn ein CSI-Treiber in Ihrem EKS-Cluster bereitgestellt wird, können Sie über die nativen Kubernetes-Speicherressourcen wie Persistent Volumes (PVs), Persistent Volume Claims () und Storage Classes (PVCs) auf seine Funktionen zugreifen. SCs Dieser Link
Auswahl des richtigen Volumes
Wir empfehlen die Verwendung der neuesten Generation von Blockspeicher (GP3), da diese das richtige Gleichgewicht zwischen Preis und Leistung bietet. Außerdem können Sie damit Volumen-IOPS und Durchsatz unabhängig von der Volume-Größe skalieren, ohne zusätzliche Blockspeicherkapazität bereitstellen zu müssen. Wenn Sie derzeit GP2-Volumes verwenden, empfehlen wir dringend, auf GP3-Volumes zu migrieren. Der Blogbeitrag Migration von Amazon EKS-Clustern von GP2- zu GP3-EBS-Volumes
Amazon EBS ermöglicht die Online-Änderung von Volumeneigenschaften wie Volumengröße, IOPS und Durchsatz. Mit dieser Funktion kann man ohne Anwendungsausfälle von gp2 auf gp3 migrieren, indem man entweder PVC-Anmerkungen verwendet, wie in diesem Blog
Wenn Sie über Anwendungen verfügen, die eine höhere Leistung erfordern und Volumen benötigen, die größer sind als das, was ein einzelnes GP3-Volume
Ein einzelnes GP3-Volume kann bis zu 16.000 maximale IOPS, einen maximalen Durchsatz von 1.000 und MiB/s maximal 16 TiB unterstützen. Die neueste Generation des bereitgestellten IOPS-SSD-Volumes, das bis zu 256.000 IOPS, 4.000 MiB/s Durchsatz und 64 TiB bietet.
Unter diesen Optionen sollten Sie Ihre Speicherleistung und Ihre Kosten am besten an die Anforderungen Ihrer Anwendungen anpassen.
Überwachen und optimieren Sie im Laufe der Zeit
Es ist wichtig, die Ausgangsleistung Ihrer Anwendung zu verstehen und sie für ausgewählte Volumes zu überwachen, um zu überprüfen, ob sie Ihren Anforderungen entspricht requirements/expectations oder ob sie überdimensioniert ist (z. B. ein Szenario, in dem bereitgestellte IOPS nicht vollständig genutzt werden).
Anstatt von Anfang an ein großes Volumen zuzuweisen, können Sie die Größe des Volumes schrittweise erhöhen, während Sie Daten ansammeln. Mithilfe der Funktion zur Volumengrößenänderung
Um hängengebliebene EBS-Volumes zu identifizieren und zu entfernen, können Sie die Kostenoptimierungskategorie von AWS Trusted Advisor verwenden. Diese Funktion hilft Ihnen dabei, nicht angehängte Volumes oder Volumes mit sehr geringer Schreibaktivität für einen bestimmten Zeitraum zu identifizieren. Es gibt ein cloudnatives, schreibgeschütztes Open-Source-Tool namens Popeye
Ausführliche Informationen zur Überwachung finden Sie im EKS-Leitfaden zur Kostenoptimierung zur Beobachtbarkeit.
Eine weitere Option, die Sie in Betracht ziehen können, sind die Amazon EBS-Volumenempfehlungen von AWS Compute Optimizer. Dieses Tool identifiziert automatisch die optimale Volume-Konfiguration und das richtige erforderliche Leistungsniveau. Es kann beispielsweise für optimale Einstellungen in Bezug auf bereitgestellte IOPS, Volume-Größen und Typen von EBS-Volumes verwendet werden, basierend auf der maximalen Auslastung in den letzten 14 Tagen. Es quantifiziert auch die potenziellen monatlichen Kosteneinsparungen, die sich aus den Empfehlungen ergeben. Weitere Informationen finden Sie in diesem Blog
Richtlinie zur Aufbewahrung von Backup
Sie können die Daten auf Ihren Amazon EBS-Volumes sichern, indem Sie point-in-time Snapshots erstellen. Der Amazon EBS CSI-Treiber unterstützt Volume-Snapshots. Mithilfe der hier beschriebenen Schritte erfahren Sie, wie Sie einen Snapshot erstellen und einen EBS-PV wiederherstellen.
Nachfolgende Snapshots sind inkrementelle Backups, d. h., dass nur die Blöcke auf dem Gerät gespeichert werden, die sich nach Ihrem letzten Snapshot geändert haben. Hierdurch wird die zum Erstellen des Snapshots erforderliche Zeit verringert und es werden Speicherkosten eingespart, weil keine Datenduplikate angelegt werden. Die zunehmende Anzahl alter EBS-Snapshots ohne angemessene Aufbewahrungsrichtlinien kann jedoch zu unerwarteten Kosten führen, wenn der Betrieb in großem Umfang erfolgt. Wenn Sie Amazon EBS-Volumes direkt über die AWS-API sichern, können Sie Amazon Data Lifecycle Manager
Anmerkung
Derzeit gibt es keine Möglichkeit, Amazon DLM über den Amazon EBS CSI-Treiber zu nutzen.
In einer Kubernetes-Umgebung können Sie ein Open-Source-Tool namens Velero nutzen, um Ihre EBS Persistent Volumes zu sichern
Amazon Elastic File System (EFS)
Amazon Elastic File System (EFS)
Einer der Hauptvorteile von Amazon EFS besteht darin, dass es von mehreren Containern bereitgestellt werden kann, die auf mehrere Knoten und mehrere Availability Zones verteilt sind. Ein weiterer Vorteil besteht darin, dass Sie nur für den Speicherplatz zahlen, den Sie tatsächlich nutzen. EFS-Dateisysteme werden beim Hinzufügen und Entfernen von Dateien automatisch vergrößert und verkleinert, sodass keine Kapazitätsplanung erforderlich ist.
Um Amazon EFS in Kubernetes zu verwenden, müssen Sie den Amazon Elastic File System Container Storage Interface (CSI) -Treiber verwenden. aws-efs-csi-driver
Auswahl der richtigen EFS-Speicherklasse
Amazon EFS bietet vier Speicherklassen.
Zwei Standard-Speicherklassen:
-
Amazon EFS-Standard
Zwei Speicherklassen für eine Zone:
-
Amazon EFS One Zone — Seltener Zugriff (EFS One Zone-IA)
Die Speicherklassen Infrequent Access (IA) sind kostenoptimiert für Dateien, auf die nicht täglich zugegriffen wird. Mit Amazon EFS Lifecycle Management können Sie Dateien, auf die während der Dauer der Lebenszyklusrichtlinie (7, 14, 30, 60 oder 90 Tage) nicht zugegriffen wurde, in die IA-Speicherklassen verschieben, wodurch die Speicherkosten im Vergleich zu den Speicherklassen EFS Standard und EFS One Zone um bis zu 92 Prozent gesenkt werden können.
Mit EFS Intelligent-Tiering überwacht das Lebenszyklusmanagement die Zugriffsmuster Ihres Dateisystems und verschiebt Dateien automatisch in die optimalste Speicherklasse.
Anmerkung
aws-efs-csi-driver hat derzeit keine Kontrolle über die Änderung der Speicherklassen, das Lebenszyklusmanagement oder Intelligent-Tiering. Diese sollten manuell in der AWS-Konsole oder über EFS eingerichtet APIs werden.
Anmerkung
aws-efs-csi-driver ist nicht mit Windows-basierten Container-Images kompatibel.
Anmerkung
Es liegt ein bekanntes Speicherproblem vor, wenn vol-metrics-opt-in(zur Ausgabe von Volumenmetriken) aktiviert ist, da die DiskUsage
Amazon FSx für Lustre
Lustre ist ein leistungsstarkes paralleles Dateisystem, das häufig in Workloads verwendet wird, die einen Durchsatz von bis zu Hunderten von GB/s und unter einer Millisekunde pro Vorgang erfordern. Es wird für Szenarien wie maschinelles Lernen, Finanzmodellierung, HPC und Videoverarbeitung verwendet. Amazon FSx for Lustre
Sie können persistente Kubernetes-Speichervolumes verwenden, die von for Lustre unterstützt werden, indem Sie den FSx FSx for Lustre CSI-Treiber
Link zu Amazon S3
Es wird empfohlen, ein äußerst beständiges Langzeitdaten-Repository auf Amazon S3 mit Ihrem FSx for Lustre-Dateisystem zu verknüpfen. Nach der Verknüpfung werden große Datensätze nach Bedarf verzögert von Amazon S3 in die FSx for Lustre-Dateisysteme geladen. Sie können Ihre Analysen und Ergebnisse auch wieder in S3 ausführen und dann Ihr Lustre-Dateisystem löschen.
Auswahl der richtigen Bereitstellungs- und Speicheroptionen
FSx for Lustre bietet verschiedene Bereitstellungsoptionen. Die erste Option heißt Scratch und repliziert keine Daten, während die zweite Option als persistent bezeichnet wird, was, wie der Name schon sagt, Daten persistiert.
Die erste Option (Scratch) kann verwendet werden, um die Kosten für die temporäre Datenverarbeitung mit kürzerer Laufzeit zu senken. Die persistente Bereitstellungsoption ist für eine längerfristige Speicherung konzipiert, bei der Daten innerhalb einer AWS Availability Zone automatisch repliziert werden. Sie unterstützt auch sowohl SSD- als auch HDD-Speicher.
Sie können den gewünschten Bereitstellungstyp unter Parametern im Kubernetes des FSx For Lustre-Dateisystems konfigurieren. StorageClass Hier ist ein Link
Anmerkung
Für latenzempfindliche Workloads oder Workloads, die ein Höchstmaß an IOPS/Durchsatz erfordern, sollten Sie SSD-Speicher wählen. Für durchsatzorientierte Workloads, die nicht latenzempfindlich sind, sollten Sie HDD-Speicher wählen.
Aktivieren Sie die Datenkomprimierung
Sie können die Datenkomprimierung auch in Ihrem Dateisystem aktivieren, indem Sie "LZ4" als Datenkomprimierungstyp angeben. Sobald sie aktiviert ist, werden alle neu geschriebenen Dateien FSx für Lustre automatisch komprimiert, bevor sie auf die Festplatte geschrieben und beim Lesen dekomprimiert werden. LZ4 Der Datenkomprimierungsalgorithmus ist verlustfrei, sodass die Originaldaten aus den komprimierten Daten vollständig rekonstruiert werden können.
Sie können den Datenkomprimierungstyp wie LZ4 unter den Parametern im Kubernetes des FSx For Lustre-Dateisystems konfigurieren. StorageClass Die Komprimierung ist deaktiviert, wenn der Wert auf NONE gesetzt ist, was die Standardeinstellung ist. Dieser Link
Anmerkung
Amazon FSx for Lustre ist nicht mit Windows-basierten Container-Images kompatibel.
Amazon FSx für NetApp ONTAP
Amazon FSx for NetApp ONTAP
Amazon FSx für NetApp ONTAP unterstützt zwei Speicherstufen: 1 primäre Stufe und 2 Speicherkapazitätspoolstufe.
Die primäre Stufe ist eine bereitgestellte, leistungsstarke SSD-basierte Stufe für aktive, latenzempfindliche Daten. Der vollständig elastische Kapazitätspool-Tier ist kostenoptimiert für Daten, auf die selten zugegriffen wird, wird automatisch skaliert, wenn die Daten darauf verteilt werden, und bietet eine praktisch unbegrenzte Kapazität im Petabyte-Bereich. Sie können Datenkomprimierung und Deduplizierung im Kapazitätspoolspeicher aktivieren und so den Speicherverbrauch Ihrer Daten weiter reduzieren. NetAppDie systemeigene, richtlinienbasierte FabricPool Funktion überwacht kontinuierlich die Datenzugriffsmuster und überträgt Daten automatisch bidirektional zwischen Speicherebenen, um Leistung und Kosten zu optimieren.
NetAppAstra Trident bietet dynamische Speicherorchestrierung mithilfe eines CSI-Treibers, der es Amazon EKS-Clustern ermöglicht, den Lebenszyklus persistenter Volumes zu verwalten, die von Amazon FSx für NetApp ONTAP-Dateisysteme PVs unterstützt werden. Erste Schritte finden Sie unter Verwenden von Astra Trident mit Amazon FSx für NetApp ONTAP
Weitere Überlegungen
Minimiere die Größe des Container-Images
Sobald Container bereitgestellt sind, werden Container-Images auf dem Host in mehreren Layern zwischengespeichert. Durch die Reduzierung der Größe von Bildern kann der auf dem Host benötigte Speicherplatz reduziert werden.
Indem Sie von Anfang an abgespeckte Basis-Images wie Scratch-Images oder Container-Images ohne Distribution
Sie sollten auch die Verwendung von Open-Source-Tools wie Slim.ai in Betracht ziehen, die eine einfache und sichere
Mehrere Ebenen von Paketen, Tools, Anwendungsabhängigkeiten und Bibliotheken können die Größe des Container-Images leicht erhöhen. Durch die Verwendung mehrstufiger Builds können Sie Artefakte selektiv von einer Phase in eine andere kopieren und dabei alles, was nicht benötigt wird, aus dem endgültigen Image ausschließen. Weitere bewährte Methoden zur Image-Erstellung finden Sie hier.
Eine weitere Sache, die Sie berücksichtigen sollten, ist, wie lange zwischengespeicherte Bilder gespeichert werden sollen. Möglicherweise möchten Sie die veralteten Bilder aus dem Image-Cache löschen, wenn eine bestimmte Menge an Speicherplatz belegt ist. Auf diese Weise können Sie sicherstellen, dass genügend Speicherplatz für den Betrieb des Hosts zur Verfügung steht. Standardmäßig führt das Kubelet
Um Optionen für die Garbage-Collection von ungenutzten Containern und Bildern zu konfigurieren, optimieren Sie das Kubelet mithilfe einer KonfigurationsdateiKubeletConfiguration
In der Kubernetes-Dokumentation erfahren Sie mehr darüber.