« Alle Blog Einträge

Eine Einführung in Kubernetes Storage

Ein wichtiger Bestandteil bei der Anwendung von Containertechnologien sowie der Containerverwaltung mit Programmen wie Kubernetes ist der Umgang mit Speicherplatz und verschiedenen Speichervarianten. Zudem können Sie mit einer guten Strategie zum Umgang mit Storage noch mehr aus Kubernetes herausholen. In diesem Artikel erfahren Sie grundlegende Informationen zu Kubernetes Storage und den verschiedenen Möglichkeiten, die die Technologie  bietet. 

Kubernetes Storage: Viele Möglichkeiten zur Speicherung

Kubernetes ist eine Plattform zur flexiblen Verwaltung und schnellen Bereitstellung von Containern, beispielsweise für die Anwendungsentwicklung. Dabei erlaubt Kubernetes Ihnen auch, die Ressourcen wie CPU, Speicherplatz und Memory, auf die die Container zugreifen, zu verwalten und zuzuweisen oder diese Prozesse zu automatisieren. Da Kubernetes die Container selbst nicht erstellt, benötigen Sie dafür eine externe Technologie.

Hier ist Kubernetes sehr flexibel und unterstützt alle gängigen Technologien zur Containererstellung. Während allein die Umstellung von Virtual Machines auf Containertechnologie zur Virtualisierung bereits viel Speicherplatz und Ressourcenauslastung spart, bietet Kubernetes Storage noch mehr Potenzial, diese Belastung zu reduzieren.

Kubernetes unterstützt verschiedene Arten von Storage und lässt Ihnen daher die Wahl, mit welchen Methoden Sie Ihre Daten sichern wollen. Dennoch hat die Auswahl der Speichermethode unter Umständen Einfluss auf die Flexibilität und Portabilität Ihrer Daten und Anwendung. Dies betrifft ebenfalls die Nutzung und Auslastung von Prozessoren, Storage und Memory. Zudem verwalten und ändern Sie mithilfe von StorageClasses in Kubernetes Speicher und Speichermethoden einfach und zentral. Nutzern ist es auch möglich, den Speicher, den sie benötigen, anzufragen.

Wie Sie StorageClass in Kubernetes nutzen

Eine StorageClass in Kubernetes beschreibt ein definiertes Set an Einstellungen für die Speicherung für ein bestimmtes Cluster. Eine alternative Bezeichnung für StorageClass in vergleichbaren Programmen ist auch Profil. Mit StorageClasses organisieren Sie in Kubernetes verschiedene Speicheranforderungen schnell und übersichtlich.

Gerade, wenn Sie verschiedene Projekte und Cluster mit Kubernetes verwalten, die unterschiedliche Policies zu beispielsweise Datenspeicher, Backupfrequenz oder Backupanzahl haben, können Sie so für jedes Set an Einstellungen eine StorageClass einrichten. Auch mehrere Projekte können einer StorageClass zugewiesen werden, sodass Sie Änderungen direkt für die gesamte StorageClass und die Einstellungen nicht für jedes Projekt, Cluster, Pod oder Node einzeln anpassen müssen. 

Ein weiterer Vorteil von StorageClasses ist, dass der Administrator eines Clusters verschiedene Speicherkonfigurationen zentral anbieten kann und die Nutzer selbst nicht mit den Details konfrontiert werden. Über Persistent Volume Claims, auf die weiter unten ausführlicher eingegangen wird, können Nutzer den Speicherplatz mit den spezifischen Eigenschaften, die sie benötigen, anfragen und der Administrator wählt dann die passende StorageClass oder definiert eine neue. 

Persistent Storage und Non-Persistent Storage in Kubernetes

Mit Kubernetes können Sie sowohl persistenten, als auch nicht-persistenten, also flüchtigen Speicher nutzen. Flüchtiger Speicher stellt hierbei die einfachste Variante dar. Der Speicher kann direkt in einen Container geschrieben werden, ist dann jedoch auch an diesen gebunden und kann von anderen Containern innerhalb eines Pods nicht verwendet werden. Flüchtiger Speicher kann jedoch auch in Form eines emptyDirs in alle Container eines Pods gemountet werden. Wird der Pod, in dem er erstellt wurde, gelöscht, verschwindet der Speicher ebenfalls. 

Persistenter Speicher ist ebenfalls verfügbar. Kubernetes unterstützt zahlreiche Speicherklassen verschiedenster Cloud-Technologien und -Anbieter. Auch Datenbanken und physischer Speicher sind möglich. Für Persistent Storage sind zudem Persistent Volume (PV) und Persistent Volume Claims (PVC) relevant. Diese beiden Methoden werden verwendet, um die Anforderungen für Speicher und Anwendungen zu definieren.

Kubernetes Persistent Volume – Unabhängig vom Pod

Bei Kubernetes Persistent Volume handelt es sich um eine Entkopplung der Speicherimplementierung von der Speicherfunktion. Der Speicher ist innerhalb eines Kubernetes Clusters portabel, jedoch nicht über dessen Grenzen hinweg. Mithilfe der StorageClass werden die Eigenschaften für den bereitzustellenden Speicher festgelegt. 

Alternativ kann aber auch ein Administrator die Parameter einzeln definieren. Im Gegensatz zum nicht-persistenten, flüchtigen Speicher, der an den Lebenszyklus des Pods, in den er geschrieben wurde, gebunden ist, ist Persistent Volume unabhängig von der Existenz des Pods, der ihn beansprucht. 

Persistent Volume Claims – Einfach Speicher beanspruchen

Persistent Volume Claims beschreiben die Verbindung zwischen den Nutzern oder Anwendungen, die die Ressourcen und den Speicher benötigen und dem geschriebenen Speicher selbst. Das Verhältnis zwischen Persistent Volume Claims und Persisten Volume ist dabei vergleichbar mit dem zwischen Pod und Nodes. Während ein Pod die Ressourcen eines Nodes braucht, greift ein Persistent Volume Claim auf den Persistent Volume, also den persistenten Speicher, zu. Mithilfe eines Persistent Volume Claims kann der Nutzer alle notwendigen Eigenschaften des Speichers spezifizieren und ihn beim Administrator anfragen. Dazu zählen die Größe des benötigten Speicherplatzes sowie die AccessModes, also Zugriffsmöglichkeiten.

Persistent Volume kann statisch oder dynamisch bereitgestellt werden. Statisch bedeutet hier, dass der Administrator mehrere Persistent Volumes für ein Cluster erstellt und diese dann für die Nutzer verfügbar sind. Dynamisch heißt, dass, falls die bereits vorhandenen Persistent Volumes nicht dem Persistent Volume Claim des Nutzers entsprechen, das Kubernetes Cluster selbst versucht, die entsprechende PV zu kreieren, der genau auf den PVC zugeschnitten ist. Dies funktioniert jedoch nur, wenn die passende StorageClass bereits im Vorfeld angelegt wurde. 

Shared Storage und Local Storage in Kubernetes

Weitere Speichermöglichkeiten mit Kubernetes betreffen Shared und Local Storage, also geteilten und lokalen Speicher. Eine lokale Persistent Volume ist eine Disk, die mit einem einzelnen Node verbunden ist. Für die Nutzung dieser Speichermethode ist das Local Persistent Volume Plugin verfügbar. 

Es ist ebenfalls möglich, dass innerhalb eines Pods mehrere Container untereinander Daten austauschen und teilen. In diesem Fall wird erneut auf non-persistent, also flüchtigen Speicher zurückgegriffen. Auch Persistent Volumes bieten die Option, dass mehrere Pods auf sie zugreifen. Dazu muss dies als Zugriffsmöglichkeit definiert werden. 

Welche Speicherstrategien sind für mich am besten geeignet?

Dies hängt ganz von Ihrem Projekt und Ihren individuellen Bedürfnissen ab und kann nicht pauschal beantwortet werden. Damit Sie sich jedoch nicht selbst mühsam einen Überblick verschaffen müssen, stehen wir Ihnen gerne zur Seite. 

Im Rahmen unseres Managed Kubernetes Hostings bei servinga beraten wir Sie selbstverständlich auch zu diesem Thema und helfen Ihnen auf Wunsch bei der Einrichtung von StorageClasses sowie von Kubernetes generell.

Fazit

Mit Kubernetes verfügen Sie über vielfältige Möglichkeiten, Ihren Speicher innerhalb eines Clusters zu verwalten und Nutzern bereitzustellen. Die zahlreichen Optionen ermöglichen Ihnen eine Speicherverwaltung, die genau auf Ihre Bedürfnisse zugeschnitten ist und erlaubt es, Ihre Cluster flexibel zu gestalten. Selbst wenn die Einarbeitung ein wenig Zeit in Anspruch nehmen kann, profitieren Sie später deutlich von der Vielseitigkeit von Kubernetes Storage.