ITGix ist stolz darauf, mit StorPool Storage zusammenzuarbeiten, um einen Kubernetes-Cluster mit StorPool als persistente Speicherlösung live vor Ort einzusetzen. Dieses Projekt zeigt die hohe Kompatibilität von StorPool Storage, die es ermöglicht, sich nahtlos in die Rechenknoten zu integrieren, auf denen Kubernetes läuft, und gleichzeitig eine überlegene Leistung im Vergleich zu ähnlichen Speicherlösungen wie Ceph zu demonstrieren. Diese Fallstudie bietet einen Überblick über den Installationsprozess und hebt Benchmark-Ergebnisse hervor, die StorPool mit Ceph vergleichen.
Container: Die Grundlage von Kubernetes
Um Kubernetes zu verstehen, müssen wir uns zunächst mit Containern beschäftigen. Container sind leichtgewichtige, portable Einheiten, die die Binärdateien, Bibliotheken und Abhängigkeiten einer Anwendung verpacken und so eine konsistente Funktionalität in verschiedenen Umgebungen gewährleisten. Im Gegensatz zu virtuellen Maschinen benötigen Container kein vollständiges Betriebssystem und sind daher äußerst ressourcenschonend.
Container sind von Natur aus zustandslos. Sobald sie angehalten werden, gehen alle an einem Container vorgenommenen Änderungen verloren. Für Anwendungen, die eine dauerhafte Datenspeicherung erfordern, wie Content-Management-Systeme (CMS) oder Datenbanken, sind dedizierte Speichersysteme unerlässlich. Kubernetes bietet persistenten Speicher über CSI-Treiber (Container Storage Interface) und StorageClasses und ermöglicht so eine zuverlässige Datenspeicherung für zustandsabhängige Anwendungen.
Kubernetes: Orchestrierung von Containern
Kubernetes ist ein Orchestrator, der für die Verwaltung und den Betrieb von Containern in einer geclusterten Umgebung entwickelt wurde. Er arbeitet mit einer Master-Worker-Architektur:
- Master-Knoten: Verwaltet die Konfiguration des Clusters mit dem Befehl kubectl API und YAML-Dateien
- Worker-Knoten: Hosten containerisierte Anwendungen, die in logischen Einheiten, sogenannten Pods, organisiert sind
Kubernetes sorgt für hohe Verfügbarkeit, indem es die Pod-Erstellung, Replikation und Ressourcenverwaltung automatisiert. Für zustandsabhängige Anwendungen integriert Kubernetes externe Speichersysteme, um eine dauerhafte Datenspeicherung zu ermöglichen.
Was ist StorPool?
StorPool ist eine verteilte Blockspeicher-Software, die auf hohe Leistung, Skalierbarkeit und Fehlertoleranz ausgelegt ist. Im Gegensatz zu herkömmlichen Speicherlösungen kann StorPool direkt auf denselben Rechenknoten wie Kubernetes ausgeführt werden, sodass keine dedizierten Speicherknoten erforderlich sind. Diese einzigartige Fähigkeit passt zur ressourcenintensiven Natur von Kubernetes, die bei der Verwendung anderer Speichersysteme oft dedizierte Knoten für eine optimale Leistung erfordert.
Projektplanung und Hardware-Einrichtung
Für dieses Projekt haben wir mit Kubespray, einem auf Ansible basierenden Automatisierungstool, einen voll funktionsfähigen Kubernetes-Cluster vor Ort eingerichtet. Die Hardware-Einrichtung bestand aus einer virtuellen Maschine als Master-Knoten und drei physischen Maschinen als Worker-Knoten.
Hardware-Spezifikationen:
- CPU: Xeon E5-2620 0 @ 2.00GHz
- RAM: 64 GB (16 GB für StorPool, 5 GB für Kubernetes-Manager-VM, 6 GB für Betriebssystem und Benutzer, 34 GB für Kubernetes-Pods)
- Speicher: 2 x Intel SSD DC S3500 240 GB pro Arbeiterknoten (6 SSDs insgesamt)
- Netzwerk: 2 x 10 Gb Ethernet (2 Knoten mit Mellanox MT27500, 1 Knoten mit Intel 82599ES)
- Betriebssystem: CentOS 7
Cluster-Konfiguration:
Arbeiter-Knoten: k8s-poc-node4, k8s-poc-node5, k8s-poc-node6
Hauptknoten: k8s-poc-master
Bereitstellung von Kubernetes mit Kubespray
Kubespray verwendet Ansible - ein Automatisierungstool, das zur Installation von Anwendungen und zur Ausführung von Aufgaben auf entfernten Rechnern verwendet wird. Ansible-Skripte können von jedem Host ausgeführt werden, der über eine Netzwerk- und SSH-Verbindung zu den Maschinen verfügt, auf denen Sie automatisierte Aufgaben ausführen möchten. Kubespray ist eine Sammlung von Ansible-Rollen (Skripten) für die Installation und Bereitstellung von Kubernetes-Clustern mit mehreren Knoten vor Ort.
Ansible installiert Kubernetes auf den gewünschten Knoten anhand einer speziell erstellten Inventardatei, die eine Liste der Maschinen enthält. Sobald die Inventarisierungsdatei mit den korrekten Informationen gefüllt ist und alle Abhängigkeiten auf den entfernten Maschinen aufgelöst sind, wird der folgende Befehl die Installation und Hauptkonfiguration des gesamten Kubernetes-Clusters für Sie starten: ansible-playbook -i inventory/mycluster/hosts.yaml -become -become-user=root cluster.yml
Die erfolgreiche Bereitstellung kann mit dem Befehl kubectl get nodes Befehl überprüft werden.

Installation von StorPool
Die Installation der StorPool-Software erfolgt durch das StorPool-Ingenieurteam nach Erfüllung der Anforderungen in der Vorinstallations-Checkliste.
Integration von StorPool mit Kubernetes
Die Installation der StorPool-Software wird vom StorPool-Entwicklungsteam anhand einer Checkliste vor der Installation durchgeführt. Die Integration mit Kubernetes umfasst:
- Installation des Kubernetes StorPool-Moduls: Auf allen Knoten erforderlich
- YAML-Dateien konfigurieren: Definieren Sie den CSI-Treiber, ServiceAccount, ClusterRole und ClusterRoleBinding
- Anwenden der Konfiguration: Verwenden Sie den Befehl kubectl apply -f config.yaml, um die Integration anzuwenden
Nach der Integration erscheint StorPool als eine verfügbare Speicherklasse, die bereit ist, persistenten Speicher für Kubernetes-Workloads bereitzustellen.

Ergebnisse
Nach Abschluss aller Konfigurationsaufgaben verfügen wir nun über einen funktionierenden Live-Cluster, der aus 4 Maschinen besteht. Alle Maschinen hosten sowohl einen funktionierenden Kubernetes-Cluster als auch einen Storpool-Speichercluster. Diese beiden Softwareprodukte arbeiten zusammen, um ein System für die Ausführung und Verwaltung von containerisierten Anwendungen und einen funktionierenden Speicher für deren Daten bereitzustellen. Kubernetes stellt sicher, dass die Anwendungen immer verfügbar sind, und Storpool gewährleistet dasselbe für ihre Daten. Die 4 Maschinen sind:k8s-poc-masterk8s-poc-node4k8s-poc-node5k8s-poc-node6k8s-poc-master fungiert als Kubernetes-Masterknoten. Dies ist der einzige Masterknoten in diesem Cluster, die anderen 3 sind Arbeiterknoten.
Der Meister hält die kubectl API, die die Kubernetes-Konfiguration ändert, Regeln für die Containerbereitstellung verwaltet und festlegt usw. Container werden in Pods auf den Worker Nodes bereitgestellt. StorPool bietet verteilten persistenten Speicher, der es Containern mit speicherabhängigen Anwendungen wie Datenbanken und CMS ermöglicht, fehlertolerante Daten sicher zu speichern.
Benchmarking der Leistung: StorPool vs. Ceph
Um die Leistung von StorPool zu bewerten, wurden Benchmark-Tests mit fio (Flexible Input/Output) und dbench durchgeführt. Bei den Tests wurden die sequentielle und zufällige Lese-/Schreibleistung, die Bandbreite und die Latenzzeit gemessen.
StorPool Benchmark-Ergebnisse
- Zufälliges Lesen/Schreiben IOPS: 166k / 61.4k
- Bandbreite (Lesen/Schreiben): 2176 MiB/s / 466 MiB/s
- Durchschnittliche Latenzzeit (Lesen/Schreiben): 279,06 µs / 219,43 µs
- Sequentielles Lesen/Schreiben: 2223 MiB/s / 487 MiB/s
- Gemischte zufällige Lese-/Schreib-IOPS: 80,5k / 26,9k
Ceph-Benchmark-Ergebnisse
Die Tests wurden auf einem Ceph-Cluster durchgeführt, der auf zwei dedizierten Servern mit den folgenden Spezifikationen gehostet wurde:
- CPU: AMD Ryzen 7 1700X
- ARBEITSSPEICHER: 64 GB
- Speicher: 2 x 512 GB NVMe SSDs pro Server
CephFS-Ergebnisse
- Zufälliges Lesen/Schreiben IOPS: 16.2k / 7379
- Bandbreite (Lesen/Schreiben): 185 MiB/s / 106 MiB/s
- Durchschnittliche Latenzzeit (Lesen/Schreiben): 2645,18 µs
- Sequentielles Lesen/Schreiben: 203 MiB/s / 106 MiB/s
- Gemischte zufällige Lese-/Schreibvorgänge IOPS: 9322 / 3077
Ceph RBD-Ergebnisse
- Zufälliges Lesen/Schreiben IOPS: 15.3k / 7591
- Bandbreite (Lesen/Schreiben): 202 MiB/s / 108 MiB/s
- Durchschnittliche Latenzzeit (Lesen/Schreiben): 2970,04 µs
- Sequentielles Lesen/Schreiben: 188 MiB/s / 106 MiB/s
- Gemischte zufällige Lese-/Schreibvorgänge IOPS: 8819 / 2954
Vergleich: StorPool vs. Ceph
StorPool übertrifft Ceph in allen wichtigen Leistungsmetriken:
- Höhere IOPS: StorPool liefert deutlich bessere zufällige und sequenzielle Lese-/Schreiboperationen
- Geringere Latenz: Die Latenzzeit von StorPool ist drastisch niedriger, was einen schnelleren Datenzugriff gewährleistet.
- Größere Bandbreite: Sowohl die Lese- als auch die Schreibbandbreite sind mit StorPool wesentlich höher









Schlussfolgerung
Dieses Projekt unterstreicht die Leistungsfähigkeit der Kombination von Kubernetes mit StorPool Storage, um eine leistungsstarke, skalierbare und fehlertolerante Umgebung für containerisierte Anwendungen zu schaffen. Die Fähigkeit von StorPool, neben Kubernetes auf derselben Hardware zu laufen, demonstriert eine beispiellose Kompatibilität und Ressourceneffizienz, die es von traditionellen Speicherlösungen wie Ceph abhebt.
Durch die Nutzung der Stärken von Kubernetes und StorPool haben ITGix und StorPool ein modernes, effizientes und hochleistungsfähiges System geschaffen, das in der Welt von DevOps und Cloud-Infrastrukturen als Benchmark dient.