Welche Auswirkungen hat die Verwendung von Helm-Bereitstellungen anstelle von StatefulSets für Datenbanken wie MongoDB oder MySQL?

7

Die Definition einer zustandslosen App scheint für Datenbankserver wie MongoDB oder MySQL zu gelten. Ich fand Helm Charts als eine Art Template-Repository für Kubernetes. Die stabilen Builds verwenden jedoch alle Bereitstellungen. Nur im Inkubator, die nicht als stabil vorgesehen sind.

Welche Auswirkungen hat die Verwendung von Bereitstellungen für DB-Server?

Gibt es Probleme wie Synchronisierungs- / Replikationsprobleme, wenn beispielsweise mehrere Instanzen in einem Cluster ausgeführt werden?

Hintergrund: Ich möchte MongoDB in einem Failover-Cluster ausführen, daher werden mindestens 2 Instanzen ausgeführt.

Daniel
quelle

Antworten:

5

Als Kubernetes die neue StatefulSet-Funktion mit K8s v1.5 ankündigte (die vom alten PetSetNamen konvertiert wurde ), veröffentlichten sie einen wirklich guten Blog-Beitrag, in dem ein Beispiel für die Verwendung vorgestellt wurde: https://kubernetes.io/blog/2016/ 12 / statefulset-run-scale-stateful-applications-in-kubernetes /

Der erste Absatz enthält eine wirklich gute Beschreibung der Unterscheidungsmerkmale, die mir immer in den Sinn gekommen sind:

... "höchstens ein Pod pro Index" für die Bereitstellung der Pods im Set. Zusammen mit der geordneten Bereitstellung, der geordneten Beendigung, eindeutigen Netzwerknamen und dem dauerhaften stabilen Speicher ...

Zerlegen Sie die wichtigen:

Eindeutige Netzwerknamen

In einer Bereitstellung spielt der Netzwerkname keine Rolle, da jeder Pod in der Lage sein sollte, die Arbeit aufzunehmen. Wenn Sie jedoch Dinge wie einen Stateful-Cluster ausführen, haben Sie möglicherweise das Konzept von "Mastern" und "Slaves". Mit dieser eindeutigen Netzwerkbenennung können Sie die Unterscheidung beibehalten, indem Sie auf einen bestimmten Pod mit einem vorhersehbaren inkrementellen Namen verweisen .

Bestellte Kündigung

Dies ist wichtig für Neubereitstellungen in einem Stateful Cluster, da Sie möglicherweise über kritische Computer verfügen, die länger aktiv bleiben müssen. Wenn Sie Koordinator- oder Führungsknoten haben, sollten diese als letzte neu gestartet werden. Mit StatefulSets können Sie dies tun. Der verlinkte Blog-Beitrag zeigt sogar ein Beispiel dafür.

Dauerhafte stabile Lagerung

Dies ist wohl der wichtigste Unterschied. Standardmäßig behalten StatefulSets ihren Speicher bei. Kubernetes löscht den an ein StatefulSet angehängten Speicher nicht automatisch. Dasselbe kann mit Bereitstellungen erreicht werden, ist jedoch nicht die Standardeinstellung.

BoomShadow
quelle