Von Johannes Mebert auf Montag, 22. Juli 2024
Kategorie: Big Data & AI

Stein auf Stein: Die Stackable Data Platform (1/2)

Die effiziente Speicherung, Verarbeitung und Analyse großer Datenmengen sind essenzielle Bausteine in der Welt von Big Data. Sie ermöglichen nicht nur die Bewältigung der ständig wachsenden Datenflut, sondern auch die Gewinnung wertvoller Erkenntnisse, die Innovationen vorantreiben und fundierte Entscheidungsprozesse unterstützen. In einem Umfeld, in dem Daten als das neue Öl gelten, ist die Fähigkeit, diese Ressourcen optimal zu nutzen, von entscheidender Bedeutung für den Wettbewerbsvorteil und den langfristigen Erfolg von Unternehmen. Um den Einstieg zu erleichtern, ist es empfehlenswert, sich für eine vorkonfigurierte Big Data Distribution zu entscheiden, diese zu installieren und einzurichten. Die Alternative, selbst eine Hadoop-Installation durchzuführen und zu pflegen, ist oft sehr aufwändig und fehleranfällig.

Eine interessante Big Data Distribution ist die Stackable Data Platform (SDP). Diese Plattform unseres Partners basiert vollständig auf Open Source Software und kann somit auch kommerziell kostenfrei betrieben werden.

Die Vorteile der SDP sind die Integration von modernen Architekturen, wie Data Mesh und Lakehouse und die Tatsache, dass Stackable auf Kubernetes basiert. Somit kann es flexibel On-Premises aber auch in der Cloud betrieben werden.

Dieser Artikel soll bei der Installation der Stackable Data Platform (SDP) und der Einrichtung von Kubernetes als Teil der Plattform unterstützen. Der Aufbau der Infrastruktur soll in einem Unternehmensumfeld erfolgen, das großen Wert auf Datensicherheit und -hoheit legt und daher eine eigene IT-Infrastruktur (On-Premises) betreibt. In einem solchen Umfeld ist der Betrieb eines Web-Proxys eine gängige Praxis, die in diesem Zusammenhang ebenfalls berücksichtigt wird. Zu den bekannten Kubernetes-Distributionen zählen Minikube, K3s und Kind, die jeweils spezifische Anwendungsfälle und Vorteile bieten. Während Minikube und Kind vor allem für das Testen und lokale Entwicklungsumgebungen geeignet sind, bietet K3s eine leichtere und ressourcenschonendere Lösung für den produktiven Einsatz in einer On-Premises-Umgebung. Die Wahl ist hier jedoch auf Kubeadm gefallen, da es eine professionelle und flexible Lösung bietet, die sich strikt an die offiziellen Kubernetes-Spezifikationen hält. Es ermöglicht die einfache Installation und Konfiguration eines reinen Kubernetes-Clusters ohne zusätzliche Abstraktionen, was maximale Kompatibilität und Kontrolle gewährleistet.

Anmerkungen:

Um mit der Installation eines Kubernetes Clusters beginnen zu können, müssen einige Voraussetzungen umgesetzt werden.

DNS

Eine wichtige Voraussetzung ist eine funktionierende DNS-Auflösung innerhalb des Clusters. Falls kein passender DNS-Service existiert, müssen alle Server in der /etc/hosts-Datei der beteiligten Server eingetragen werden. Im Playbook findet sich eine Beispiel-Liste in den Settings in Zeile 9 und 10.

Zusätzlich muss der eigene Hostname auf jedem Host entsprechend gesetzt werden:

hostnamectl set-hostname kube-control

IP-Forwarding

Kubernetes setzt für die Netzwerkkommunikation auf Technologien wie iptables und IP-Forwarding. Daher ist es erforderlich, diese Funktionen in Ihrem System zu aktivieren, um eine reibungslose Netzwerkkommunikation innerhalb des Kubernetes Clusters sicherzustellen. Außerdem sollen Pakete, die an eine Netzwerkbrücke geschickt werden, auch an iptables gesendet werden. Diese Einstellung wird wie folgt vorgenommen: 

Swap

Swap darf nicht aktiviert sein, weshalb Swap-Einträge in der /etc/fstab gelöscht und deaktiviert werden müssen:

 swapoff -a

Modules

Es müssen die Kernel-Module „overlay" und „br_netfilter" aktiviert sein, damit iptables überbrückte Pakete sehen kann. Dazu muss in /etc/sysctl.d/ eine *.conf-Datei erstellt werden, z. B.: 

Proxy Settings

Die systemweiten Proxy Settings kann man in der /etc/profile.d/proxy.sh speichern. Zu beachten ist, dass zusätzlich die Netzwerke für Kubernetes in der no_proxy gespeichert werden:

Pakete installieren

Nun sind die Voraussetzungen erfüllt und man kann die grundlegenden Pakete installieren. Zuvor müssen jedoch die Repositories von Docker und Kubernetes installiert werden: 

Für containerd kann eine Standardkonfiguration in /etc/containerd/config.toml erstellt werden. Wichtig ist, dass danach SystemdCgroup = true gesetzt wird. Damit wird der Systemd Cgroup Driver benutzt.

Mehr dazu siehe hier.

Damit containerd den Proxy kennt, muss folgende Datei erstellt werden und die neuen Konfigurationen in Systemd eingelesen werden: 

Systemd muss die Konfigurationen neu einlesen und die Dienste für containerd/kubernetes müssen aktiviert und gestartet werden: 

Kubernetes Cluster

Damit sind die Voraussetzungen erfüllt, und der Cluster kann initialisiert werden. Mit dem Schalter pod-network-cidr kann ein Netzwerkbereich festgelegt werden. Hier wurde die Standardeinstellung für das CNI flannel gewählt. 

Netzwerk CNI Plugin

Falls der Netzwerkbereich geändert wurde, muss das Manifest heruntergeladen und der Netzwerkbereich geändert werden.

Im Standardfall:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

Local Path Plugin + Standard StorageClass

Damit Stackable funktionieren kann, muss ein Storage Provisioner lokalen Speicher bereitstellen. Dafür kann man das Rancher Plugin "local path provisioner" verwenden. Zusätzlich ist wichtig, diese StorageClass als Standard zu setzen. Die Stackable Demos verwenden die Standard StorageClass. 

Um die Worker Nodes dem Cluster hinzuzufügen, kann man nun Folgendes auf den Nodes ausführen:

Mit „kubectl get workers" kann überprüft werden, ob die Worker Nodes erfolgreich dem Cluster hinzugefügt wurden.

kubectl get workers –o wide

Bis hier hat der Blogartikel die Voraussetzungen für Kubernetes mit kubeadm erläutert und hat eine Schritt-für-Schritt-Anleitung zur Installation von Kubernetes hinter einem Web-Proxy geboten.
Mit diesen durchgeführten Schritten sind alle Voraussetzungen vorhanden, um mit dem Deployment von Stackable zu beginnen. Dieses wird im zweiten Teil dieser Anleitung erklärt.

Wer bereits jetzt schon mehr Interesse am Aufbau einer Stackable Data Platform hat, kann uns gerne auf unser Stackable Grundlagen Seminar ansprechen.

Seminarempfehlung

Kommentare hinterlassen