Speicheroptionen für einen Kubernetes-Cluster
In diesem Artikel werden die Speicherfunktionen von Amazon Elastic Kubernetes Service (Amazon EKS) und Azure Kubernetes Service (AKS) verglichen und die Optionen zum Speichern von Workloaddaten in AKS beschrieben.
Hinweis
Dieser Artikel ist Teil einer Artikelreihe, die Experten, die mit Amazon EKS vertraut sind, hilft, Azure Kubernetes Service (AKS) zu verstehen.
Amazon EKS-Speicheroptionen
In Amazon EKS, nach Kubernetes-Version 1.11, verfügt der Cluster über eine standardmäßige StorageClass (Speicherklasse) namens gp2
für Ansprüche auf persistente Volumes. Administratoren können Treiber hinzufügen, um weitere Speicherklassen zu definieren, beispielsweise:
- Amazon EBS-CSI-Treiber als Amazon EKS-Add-On
- Amazon EBS-CSI selbstverwaltetes Add-On
- Amazon EFS-CSI-Treiber
- Amazon FSx für Lustre-CSI-Treiber
- Amazon FSx für NetApp ONTAP-CSI-Treiber
Durch das Hinzufügen von Treibern und Speicherklassen können Sie Speicherdienste verwenden wie:
Amazon Elastic Block Store (Amazon EBS), eine Speicherlösung auf Blockebene, die mit Amazon Elastic Compute Cloud (EC2)-Instanzen zum Speichern persistenter Daten verwendet wird. Dieser Dienst ähnelt Azure Disk Storage, der je nach benötigter Leistung mehrere SKUs wie SSD Standard, SSD Premium oder Disk Storage Ultra aufweist.
Amazon Elastic File System (Amazon EFS), das Netzwerkdateisystem-Zugriff auf externe Dateisysteme bereitstellt, die von Instanzen gemeinsam genutzt werden können. Die entsprechende Azure-Lösung ist Azure Files und Azure Files Premium mit sowohl SMB (Server Message Block) 3.0- als auch NFS-Zugriff.
Lustre, ein Open-Source-Dateisystem, das häufig beim High-Performance Computing (HPC) verwendet wird. In Azure können Sie Disk Storage Ultra oder Azure HPC Cache für Workloads verwenden, bei denen Geschwindigkeit wichtig ist, z. B. Machine Learning und HPC.
NetApp ONTAP, ein vollständig verwalteter gemeinsam genutzter ONTAP-Speicher in Amazon Web Services (AWS). Azure NetApp Files ist ein ähnlicher Dateispeicherdienst in Azure, der auf der NetApp-Technologie basiert.
AKS-Speicheroptionen
Jeder AKS-Cluster umfasst standardmäßig die folgenden vordefinierten Speicherklassen:
- Die Standardspeicherklasse
managed-csi
verwendet Disk Storage SSD Standard. SSD Standard ist eine kostengünstige Speicheroption, die für Workloads optimiert ist, die konsistente Leistung bei niedrigeren E/A-Vorgängen pro Sekunde (IOPS) benötigen. - Die Klasse
managed-csi-premium
verwendet verwaltete Datenträger vom Typ „Disk Storage SSD Premium“. - Die Klasse
azurefile-csi
verwendet Azure Files, um gleichzeitigen gemeinsam genutzten Zugriff auf dasselbe Speichervolume mittels SMB oder NFS bereitzustellen. - Die Klasse
azurefile-csi-premium
verwendet Azure Files Premium für Dateifreigaben mit IOPS-intensiven Workloads. Azure Files Premium bietet geringe Wartezeiten und hohen Durchsatz auf Grundlage von SSD-Speicher.
Sie können diese Optionen erweitern, indem Sie weitere Speicherklassen hinzufügen und in andere verfügbare Speicherlösungen integrieren, z. B.:
- Disk Storage Ultra
- Azure NetApp Files
- HPC Cache
- NFS-Server
- Speicherlösungen von Drittanbietern
Azure Disk Storage
Standardmäßig umfasst ein AKS-Cluster die vordefinierten Speicherklassen managed-csi
und managed-csi-premium
, die Disk Storage verwenden. Ähnlich wie Amazon EBS erstellen diese Klassen einen verwalteten Datenträger oder ein Blockgerät, das für den Podzugriff an den Knoten angefügt wird.
Die Disk-Klassen gestatten sowohl eine statische als auch eine dynamische Volumebereitstellung. Mit der Freigaberichtlinie wird sichergestellt, dass der Datenträger zusammen mit dem persistenten Volume gelöscht wird. Sie können den Datenträger erweitern, indem Sie den Anspruch auf persistente Volumes bearbeiten.
Diese Speicherklassen verwenden verwaltete Azure-Datenträger mit lokal redundantem Speicher (LRS). LRS bedeutet, dass von den Daten drei synchrone Kopien innerhalb eines einzelnen physischen Speicherorts in einer primären Azure-Region vorhanden sind. LRS ist die kostengünstigste Replikationsoption, bietet aber keinen Schutz vor Rechenzentrumsausfällen. Um dieses Risiko zu verringern, erstellen Sie regelmäßige Sicherungen oder Momentaufnahmen von Disk Storage-Daten mithilfe von Lösungen wie Velero oder Azure Backup, die integrierte Momentaufnahmetechnologien verwenden können.
Beide Speicherklassen basieren auf verwalteten Datenträgern, und beide verwenden SSD-Laufwerke (Solid-State Disk). Es ist wichtig, die Unterschiede zwischen Standard- und Premium-Datenträgern zu verstehen:
- Der Preis für Standard-Datenträger basiert auf der Größe und der Anzahl der Speichertransaktionen.
- Premium-Datenträger werden nur nach Größe abgerechnet, was sie für Workloads kostengünstiger machen kann, die eine hohe Anzahl von Transaktionen erfordern.
- SSD Premium-Datenträger bieten höhere Höchstwerte für Durchsatz und IOPS, wie in diesem Vergleich zu sehen ist.
- Storage Premium wird für die meisten Produktions- und Entwicklungsworkloads empfohlen.
Wenn Sie verwaltete Azure-Datenträger als primäre Speicherklasse verwenden, sollten Sie die VM-SKU berücksichtigen, die Sie für Ihren Kubernetes-Cluster auswählen. Azure-VMs begrenzen die Anzahl der Datenträger, die Sie an sie anfügen können, und der Grenzwert variiert je nach VM-Größe. Da Azure-Datenträger als ReadWriteOnce
eingebunden werden, sind sie außerdem nur für einen einzelnen Pod verfügbar.
Azure Premium SSD v2-Datenträger
Azure SSD Premium SSD v2-Disks bieten E/A-intensive Unternehmensworkloads, eine konsistente Datenträgerwartezeit im Bereich Submillisekunden sowie hohe IOPS und hohen Durchsatz. Die Leistung (Kapazität, Durchsatz und IOPS) von SSD Premium v2-Datenträgern kann jederzeit unabhängig konfiguriert werden, wodurch es einfacher wird, dass eine größere Anzahl von Szenarien kosteneffizient ist, während die Leistungsanforderungen erfüllt werden. Weitere Informationen zum Konfigurieren eines neuen oder vorhandenen AKS-Clusters für die Verwendung von Azure Premium SSD v2-Datenträgern finden Sie unter Verwenden von Azure Premium SSD v2-Datenträgern in Azure Kubernetes Service.
Disk Storage Ultra
Disk Storage Ultra ist eine verwaltete Azure-Datenträgerebene, die hohen Durchsatz, hohe IOPS und Disk Storage mit konsistent geringen Wartezeiten für Azure-VMs bietet. Disk Storage Ultra ist für Workloads vorgesehen, die daten- und transaktionsintensiv sind. Wie andere Disk Storage-SKUs und Amazon EBS binde Disk Storage Ultra immer nur einen Pod gleichzeitig ein und bietet keinen gleichzeitigen Zugriff.
Verwenden Sie das Flag --enable-ultra-ssd
, um Disk Storage Ultra in Ihrem AKS-Cluster zu aktivieren.
Wenn Sie Disk Storage Ultra auswählen, beachten Sie dessen Einschränkungen, und vergewissern Sie sich, dass Sie eine kompatible VM-Größe auswählen. Disk Storage Ultra ist mit lokal redundanter Speicherreplikation (LRS) verfügbar.
Verwenden eigener Schlüssel (BYOK)
Azure verschlüsselt alle ruhenden Daten auf einem verwalteten Datenträger. Standardmäßig werden Daten mit von Microsoft verwalteten Schlüsseln verschlüsselt. Für mehr Kontrolle über Verschlüsselungsschlüssel können Sie vom Kunden verwaltete Schlüssel zur Verwendung für die Verschlüsselung im Ruhezustand sowohl für das Betriebssystem als auch für Datenfestplatten für Ihre AKS-Cluster bereitstellen. Weitere Informationen finden Sie unter Bring Your Own Keys (BYOK) mit verwalteten Azure-Datenträgern in Azure Kubernetes Service (AKS).
Azure Files
Disk Storage kann keinen gleichzeitigen Zugriff auf ein Volume bereitstellen, doch Sie können Azure Files verwenden, um über das SMB-Protokoll eine Verbindung herzustellen, und dann ein freigegebenes Volume einbinden, das auf Azure Storage basiert. Dieser Prozess stellt einen NAS (Network-Attached Storage) bereit, der mit Amazon EFS vergleichbar ist. Wie bei Disk Storage gibt es zwei Optionen:
- Storage Standard von Azure Files basiert auf regulären Festplattenlaufwerken (HDDs).
- Storage Premium von Azure Files unterstützt die Dateifreigabe mit leistungsstarken SSD-Laufwerken. Die Mindestgröße der Dateifreigabe für Premium beträgt 100 GB.
Azure Files verfügt über die folgenden Replikationsoptionen für das Speicherkonto, um Ihre Daten im Falle eines Ausfalls zu schützen:
- Standard_LRS: Lokal redundanter Standardspeicher (LRS)
- Standard_GRS: Georedundanter Standardspeicher (GRS)
- Standard_ZRS: Zonenredundanter Standardspeicher (ZRS)
- Standard_RAGRS: Georedundanter Standardspeicher mit Lesezugriff (Standard-RA-GRS)
- Standard_RAGZRS: Geozonenredundanter Standardspeicher mit Lesezugriff (Standard-RA-GRS)
- Premium_LRS: Lokal redundanter Premium-Speicher (LRS)
- Premium_ZRS: Zonenredundanter Premiumspeicher (ZRS)
Um die Kosten für Azure Files zu optimieren, kaufen Sie Azure Files-Kapazitätsreservierungen.
Azure Container Storage
Azure Container Storage ist ein cloudbasierter Dienst zum Verwalten, Bereitstellen und Orchestrieren von Volumes, der nativ für Container entwickelt wurde. Es ist in Kubernetes integriert, so dass Kunden persistente Volumen dynamisch und automatisch bereitstellen können, um auf Kubernetes-Clustern ausgeführte Daten für zustandsbehaftete Anwendungen zu speichern.
Azure Container Storage nutzt vorhandene Azure Storage-Angebote für die tatsächliche Datenspeicherung und bietet eine Volumeorchestrierungs- und Verwaltungslösung, die speziell für Container entwickelt wurde. Die unterstützten Sicherungsspeicheroptionen umfassen:
- Azure-Datenträger: Präzise Steuerung von Speicher-SKUs und -Konfigurationen. Sie eignen sich für Tier-1-Datenbanken und Datenbanken vom Typ „Universell“.
- Kurzlebige Datenträger: Verwenden lokale Speicherressourcen auf AKS-Knoten (NVMe oder temporäre SSD). Am besten geeignet für Anwendungen ohne Anforderungen hinsichtlich der Datenbeständigkeit oder mit integrierter Datenreplikationsunterstützung. AKS ermittelt den verfügbaren kurzlebigen Speicher auf AKS-Knoten und ruft sie für die Volumebereitstellung ab.
- Azure Elastic SAN: Bereitstellen einer vollständig verwalteten On-Demand-Ressource. Geeignet für Datenbanken vom Typ „Universell“, Streaming- und Messaging-Dienste, CD/CI-Umgebungen und andere Tier-1-/Tier-2-Workloads. Mehrere Cluster können gleichzeitig auf ein einzelnes SAN zugreifen, persistente Volumes können jedoch jeweils nur von einem Consumer angefügt werden.
Bisher mussten für die Bereitstellung von Cloud-Speicher für Container individuelle Container Storage Interface (CSI)-Treiber verwendet werden, um Speicherdienste zu nutzen, die für IaaS (Infrastructure-as-a-Service)-zentrierte Arbeitslasten gedacht sind, und sie für Container nutzbar zu machen. Dies führt zu einem betrieblichen Mehraufwand und erhöht das Risiko von Problemen mit der Verfügbarkeit, Skalierbarkeit, Leistung, Benutzerfreundlichkeit und den Kosten der Anwendung.
Azure Container Storage ist von OpenEBS abgeleitet, einer Open-Source-Lösung, die Container-Speicherfunktionen für Kubernetes bietet. Durch die Bereitstellung einer verwalteten Volumen-Orchestrierung über Microservice-basierte Speicher-Controller in einer Kubernetes-Umgebung ermöglicht Azure Container Storage eine TRUE-native Speicherung von Containern.
Azure Container Storage ist für die folgenden Szenarien geeignet:
Beschleunigen von VM-zu-Container-Initiativen: Azure Container Storage umfasst das gesamte Spektrum von Azure-Blockspeicherangeboten, die bisher nur für VMs verfügbar waren, und stellt sie für Container zur Verfügung. Dazu gehören kurzlebige Datenträger, die extrem niedrige Latenzzeiten für Workloads wie Cassandra bieten, sowie Azure Elastic SAN, das native iSCSI- und freigegebene bereitgestellte Ziele bietet.
Vereinfachen der Volume-Verwaltung mit Kubernetes: Durch die Bereitstellung von Volume-Orchestrierung über die Kubernetes-Kontrollebene erleichtert Azure Container Storage die Bereitstellung und Verwaltung von Volumes innerhalb von Kubernetes – ohne die Notwendigkeit, zwischen verschiedenen Kontrollebenen hin und her zu wechseln.
Senkung der Gesamtbetriebskosten (TCO): Verbessern Sie die Kosteneffizienz, indem Sie den Umfang der pro Pod oder Knoten unterstützten persistenten Volumes erhöhen. Reduzieren Sie die für die Bereitstellung benötigten Speicherressourcen, indem Sie Speicherressourcen dynamisch freigeben. Beachten Sie, dass die Unterstützung für das Hochskalieren des Speicherpools selbst nicht unterstützt wird.
Azure Container Storage bietet die folgenden wichtigsten Vorteile:
Schnelles Aufskalieren zustandsbehafteter Pods: Azure Container Storage bindet persistente Volumes über Netzwerkblockspeicherprotokolle (NVMe-oF oder iSCSI) ein und bietet schnelles Anfügen und Trennen persistenter Volumes. Sie können klein anfangen und Ressourcen nach Bedarf bereitstellen und gleichzeitig sicherstellen, dass Ihre Anwendungen weder bei der Initialisierung noch in der Produktion ausgehungert oder unterbrochen werden. Die Ausfallsicherheit von Anwendungen wird durch das Wiederaufsetzen von Pods im gesamten Cluster verbessert, was eine schnelle Verschiebung von persistenten Volumes erfordert. Durch die Nutzung von Remote-Netzwerkprotokollen ist Azure Container Storage eng mit dem Pod-Lebenszyklus verbunden, um hochgradig belastbare, zustandsabhängige Anwendungen auf AKS zu unterstützen.
Verbesserte Leistung für zustandsabhängige Workloads: Azure Container Storage ermöglicht eine überragende Leseleistung und bietet durch die Verwendung von NVMe-oF über RDMA eine Schreibleistung nahe der Festplatte. Dadurch können Kunden die Leistungsanforderungen für verschiedene Container-Workloads kostengünstig erfüllen, darunter Tier 1 I/O-intensive, allgemeine Zwecke, durchsatzempfindliche und Entwicklungs-/Testaufgaben. Beschleunigen Sie die Zeit für das Anschließen/ Trennen von persistenten Volumes und minimieren Sie die Pod-Failover-Zeit.
Kubernetes-native Volumeorchestrierung: Erstellen Sie Speicherpools und persistente Volumes, erfassen Sie Momentaufnahmen und verwalten Sie den gesamten Lebenszyklus von Volumes mithilfe von
kubectl
-Befehlen, ohne zwischen Toolsets für verschiedene Vorgänge auf Steuerungsebene zu wechseln.
Azure NetApp Files
Wie AWS NetApp ONTAP ist Azure NetApp Files ein getakteter Hochleistungs-Dateispeicherdienst auf Unternehmensniveau. Azure NetApp Files wird in Azure mittels NetApp-Lösungen vollständig verwaltet. Wie Azure Files erlaubt Azure NetApp Files, dass mehrere Pods ein Volume einbinden. Sie können Astra Trident, einen Open-Source-Orchestrator für dynamischen Speicher für Kubernetes, verwenden, um Ihren AKS-Cluster so zu konfigurieren, dass er Azure NetApp Files verwendet.
Berücksichtigen Sie die Ressourcenlimits für Azure NetApp Files. Die Mindestgröße eines Kapazitätspools für Azure NetApp Files beträgt 4 TiB. Azure NetApp Files wird nach bereitgestellter Größe anstatt nach genutzter Kapazität abgerechnet.
Azure HPC Cache
Azure HPC Cache beschleunigt den Zugriff auf Ihre Daten für HPC-Aufgaben mit der vollständigen Skalierbarkeit von Cloudlösungen. Wenn Sie diese Speicherlösung auswählen, stellen Sie sicher, dass Sie Ihren AKS-Cluster in einer Region bereitstellen, die Azure HPC Cache unterstützt.
NFS-Server
Die beste Option für gemeinsam genutzten NFS-Zugriff besteht darin, Azure Files oder Azure NetApp Files zu verwenden. Sie können auch einen NFS-Server auf einer Azure-VM erstellen, der Volumes exportiert.
Beachten Sie, dass diese Option nur statische Bereitstellung unterstützt. Sie müssen die NFS-Freigaben manuell auf dem Server bereitstellen und können dies nicht automatisch aus AKS ausführen.
Diese Lösung basiert auf Infrastructure-as-a-Service (IaaS), nicht auf Platform-as-a-Service (PaaS). Sie sind verantwortlich für die Verwaltung des NFS-Servers, einschließlich Betriebssystemupdates, Hochverfügbarkeit, Sicherungen, Notfallwiederherstellung und Skalierbarkeit.
Kurzlebiger Betriebssystemdatenträger
Standardmäßig repliziert Azure den Betriebssystemdatenträger für eine VM automatisch in Azure Storage, um Datenverluste zu vermeiden, wenn die VM auf einen anderen Host verschoben wird. Da Container jedoch nicht für die Speicherung des lokalen Zustands vorgesehen sind, hat dieses Verhalten einen begrenzten Nutzen und einige Nachteile. Zu diesen Nachteilen gehören unter anderem eine langsamere Knotenbereitstellung und eine geringere Wartezeit bei Lese-/Schreibvorgängen.
Im Gegensatz dazu werden kurzlebige Betriebssystemdatenträger genau wie ein temporärer Datenträger nur auf dem Hostcomputer gespeichert. Diese Konfiguration verringert die Latenz bei Lese-/Schreibvorgängen und ermöglicht gleichzeitig eine schnellere Knotenskalierung sowie schnellere Clusterupgrades.
Hinweis
Wenn Sie nicht explizit verwaltete Azure-Datenträger für das Betriebssystem anfordern, verwendet AKS standardmäßig (soweit möglich) ein kurzlebiges Betriebssystem für eine bestimmte Knotenpoolkonfiguration.
Weitere Informationen finden Sie unter:
- Speicheroptionen für Anwendungen in Azure Kubernetes Service (AKS)
- Kurzlebige Betriebssystemdatenträger für virtuelle Azure-Computer
Lösungen von Drittanbietern
Wie Amazon EKS ist AKS eine Kubernetes-Implementierung, und Sie können Kubernetes-Speicherlösungen von Drittanbietern integrieren. Hier finden Sie einige Beispiele für Speicherlösungen von Drittanbietern für Kubernetes:
- Rook verwandelt verteilte Speichersysteme in selbstverwaltete Speicherdienste, indem Speicherverwaltungsaufgaben automatisiert werden. Rook liefert seine Dienste über einen Kubernetes-Betreiber für jeden Speicheranbieter.
- GlusterFS ist ein kostenlose und skalierbares Open-Source-Netzwerkdateisystem (NFS), das gängige, handelsübliche Hardware verwendet, um große verteilte Speicherlösungen für daten- und bandbreitenintensive Aufgaben zu erstellen.
- Ceph bietet einen zuverlässigen und skalierbaren einheitlichen Speicherdienst mit Objekt-, Block- und Dateischnittstellen aus einem einzelnen Cluster, der aus handelsüblichen Hardwarekomponenten konstruiert ist.
- Mit dem Multicloud-Objektspeicher MinIO können Unternehmen AWS S3-kompatible Dateninfrastrukturen auf jeder Cloud erstellen und so eine konsistente, portierbare Schnittstelle zu Ihren Daten und Anwendungen bereitstellen.
- Portworx ist eine End-to-End-Speicher- und -Datenverwaltungslösung für Kubernetes-Projekte und containerbasierte Initiativen. Portworx bietet auf Containerebene granularen Speicher, Notfallwiederherstellung, Datensicherheit und Multicloudmigrationen.
- Quobyte bietet Hochleistungsdatei- und -objektspeicher, den Sie auf jedem Server und in jeder Cloud bereitstellen können, um die Leistung zu skalieren, große Datenmengen zu verwalten und die Verwaltung zu vereinfachen.
- Ondat stellt eine konsistente Speicherebene auf jeder Plattform bereit. Sie können eine Datenbank oder beliebige persistente Workloads in einer Kubernetes-Umgebung ausführen, ohne die Speicherebene verwalten zu müssen.
Überlegungen zu Kubernetes-Speicher
Berücksichtigen Sie die folgenden Faktoren, wenn Sie eine Speicherlösung für Amazon EKS oder AKS auswählen.
Zugriffsmodi für Speicherklassen
In Kubernetes Version 1.21 und höher verwenden Speicherklassen von AKS und Amazon EKS standardmäßig und ausschließlich CSI-Treiber (Container Storage Interface).
Verschiedene Dienste unterstützen Speicherklassen, die unterschiedliche Zugriffsmodi haben.
Dienst | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
Azure Disks | X | ||
Azure Files | X | X | X |
Azure NetApp Files | X | X | X |
NFS-Server | X | X | X |
Azure HPC Cache | X | X | X |
Dynamische vs. statische Bereitstellung
Stellen Sie Volumes dynamisch bereit, um den Verwaltungsmehraufwand bei der statischen Erstellung persistenter Volumes zu verringern. Legen Sie eine korrekte Freigaberichtlinie fest, um zu vermeiden, dass beim Löschen von Pods nicht verwendete Datenträger zurückbleiben.
Backup
Wählen Sie ein Tool aus, um persistente Daten zu sichern. Das Tool sollte ihrem Speichertyp entsprechen, z. B. Momentaufnahmen, Azure Backup, Velero oder Kasten.
Kostenoptimierung
Um die Kosten für Azure Storage zu optimieren, verwenden Sie Azure-Reservierungen. Stellen Sie sicher, dass Sie überprüfen, welche Dienste Azure-Reservierungen unterstützen. Weitere Informationen finden Sie außerdem unter Kostenverwaltung für einen Kubernetes-Cluster.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Paolo Salvatori | Principal System Engineer
- Laura Nicolas | Cloud Solution Architect
Andere Mitwirkende:
- Chad Kittel | Principal Software Engineer
- Ed Price | Senior Content Program Manager
- Theano Petersen | Technical Writer
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.
Nächste Schritte
- AKS für Amazon EKS-Experten
- Kubernetes-Identitäts- und Zugriffsverwaltung
- Kubernetes-Überwachung und -Protokollierung
- Sicherer Netzwerkzugriff auf Kubernetes
- Kostenmanagement für Kubernetes
- Kubernetes-Knoten- und -Knotenpoolverwaltung
- Clustergovernance