Datenbanken auf Kubernetes: Ja oder Nein?
Der Betrieb von Kubernetes ist jetzt möglich. Ob Sie das tun sollten, ist eine andere Frage.
Der Betrieb von Kubernetes ist jetzt möglich. Ob Sie das tun sollten, ist eine andere Frage.

Jahrelang war der Standardrat einfach: Führen Sie Ihre staatenlosen Apps auf Kubernetes und behalten Sie Ihre Datenbanken woanders. Kubernetes wurde für Rinder entwickelt, und Datenbanken sind das ultimative Haustier.
Dieser Rat wird langsam alt. Die Speicherung auf Kubernetes ist ausgereift, und die Betreiber können jetzt Failover, Backups und Upgrades besser verarbeiten als viele handgefertigte Setups. Die Frage ist also von "Können Sie?" zu "Sollen Sie?"
Ein paar Grundlagen, die Sie verstehen müssen:
db-0, db-1) und das daraus folgende anhaltende Volumen.Mit diesen kann eine Datenbank-Kapsel neu gestartet oder bewegt werden und trotzdem ihre Daten finden.
Aber hier ist der Haken: ein StatefulSet hält nur die Daten angehängt. Es weiß nichts über Datenbank-Replikation, Failover, Backups oder Upgrades. Da kommen die Operatoren ins Spiel.
Ein Operator ist eine Software, die in Ihrem Cluster ausgeführt wird und weiß, wie man eine bestimmte Datenbank ausführt. Sie beschreiben, was Sie wollen, und es kümmert sich um die operativen Details.
Einige von ihnen sind sehr angesehen:
Ein PostgreSQL Cluster mit CloudNativePG sieht so aus:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: orders-db
spec:
instances: 3
storage:
size: 50Gi
storageClass: fast-ssd
backup:
barmanObjectStore:
destinationPath: s3://my-backups/orders-db
s3Credentials:
inheritFromIAMRole: true
retentionPolicy: "30d"
Drei Instanzen, Streaming-Replikation, automatischer Failover und Backups, in etwa 15 Zeilen. Das ist beeindruckend.
Eine Datenbank auf Kubernetes ohne Operator ist nur eine Datenbank mit zusätzlichen Möglichkeiten, sie zu knacken.
Was auch immer du machst, die Unterstützung ist das Wichtigste. Ein paar Regeln:
Wenn Sie Datenbanken auf Kubernetes laufen lassen, dann besitzt Ihr Team Dinge, die ein Managed Service verarbeiten würde:
Ich würde einen Managed Service (RDS, Cloud SQL, Azure Database und ähnliches) wählen, wenn:
Und ich würde es auf Kubernetes laufen lassen, wenn:
Das hängt davon ab, aber die Antwort ist nicht mehr "nie". Mit einem guten Betreiber, soliden Backups und einem Team, das die Datenbank versteht, ist Kubernetes ein absolut vernünftiges Zuhause für den Staat. Ohne diese wird Ihnen ein Managed Service viele schlaflose Nächte ersparen.
Meine Meinung: Die Datenbank interessiert nicht, wo sie läuft. Es interessiert sich, ob sich jemand um sie kümmert, der sie versteht.
Desly