
Ich habe eine Anwendung, die als Dienst im Azure AKS-Cluster (Kubernetes) ausgeführt wird. Diese Anwendung ruft Daten aus einer Datenbank ab und speichert sie in einer Datei.
So wie ich das verstehe, muss ich zuerst ein Docker-Image erstellen und es in das Azure AKS-Register übertragen. Sobald dies erledigt ist, muss ich einen Pod erstellen und diese Anwendung als Dienst ausführen.
Meine Frage ist:
a) Welche Azure- oder Docker-Option muss ich zum Speichern von Daten verwenden, damit sie nicht gelöscht (entfernt) werden, wenn der Pod abstürzt oder gelöscht oder auf einem anderen Knoten neu geplant wird, und die Daten nach der Erstellung einer Datei in einer Datei verfügbar bleiben?
b) Bei der Suche im Internet scheint es, dass ich den persistenten Datenträger oder Dateispeicher von Azure verwenden kann, indem ich ihn statisch oder dynamisch mit dem Befehl kubectl erstelle. Was ich jedoch nicht verstehe, ist – wie kann ich den Azure-Datenträgerspeicher verwenden, nachdem ich den persistenten Speicher mit kubectl apply -f erstellt habe?
Muss ich die Docker-Datei ändern und einen Einhängepfad (Volume?) angeben und auch den Einhängepfad in der Anwendung angeben (z. B. /mnt/app-data), wo die Anwendung Daten in die Datei schreiben kann?
Es mag zwar einen Standardmechanismus zum Speichern der Daten im AKS-Cluster geben, aber ich bin da noch relativ neu und freue mich auf den Rat eines Experten zum Erstellen und Verwenden von Speicher in Azure (genauer gesagt im AKS-Cluster), damit eine Anwendung Daten dorthin schreiben kann.
Antwort1
Wenn Sie Daten in Kubernetes dauerhaft speichern möchten (unabhängig davon, ob es sich um AKS oder eine andere Implementierung handelt), müssen Sie sich mit der Verwendung persistenter Volumes befassen. Dies ist ein Konzept in Kubernetes, das dann durch bestimmte Speicherressourcen bei Ihrem bevorzugten Anbieter unterstützt wird. In Azure ist dies beispielsweise Azure Disk oder Azure Files.
Zunächst einmal würde ich Ihnen empfehlen, Ihre App zu bewerten und festzustellen, ob Sie Daten tatsächlich dauerhaft in Ihrem Pod speichern müssen. Die Zustandslosigkeit macht Ihnen das Leben bei der Arbeit mit Kubernetes aus Sicht der Ausfallsicherheit und DR erheblich leichter. Könnten Sie beispielsweise Ihre Datenbank (die außerhalb von AKS ausgeführt wird) zur Quelle der Wahrheit machen und die Anwendung die Daten bei jeder Ausführung herunterladen lassen?
Wenn Sie diese Daten speichern müssen, müssen Sie Ihren Pods ein persistentes Volume hinzufügen und dieses als Volume in Ihrer Docker-Datei angeben. Es gibt eine gute Einführung in die Funktionsweise und Einrichtung von Storage.Hier.