2016-09-20 3 views
1

Ich versuche, eine API (basierend auf Symfony) mit kubernetes dank Google Container Engine (GKE) zu betreiben. Diese API ermöglicht dem Benutzer auch das Speichern und Herunterladen von Dateien, die irgendwo gespeichert werden sollen.Wie man Dateiuploads mit GKE verwaltet?

Ich habe versucht, es mit 1 Replik auszuführen, und bemerkte eine Ausfallzeit des Dienstes während der Erstellung des neuen Containers. Es sieht so aus, als ob mindestens 2 Replikate benötigt werden, um Ausfallzeiten zu vermeiden.

dass Unter Berücksichtigung, ich bin daran interessiert, über diese Optionen:

  • Ein Volumen basierend auf Google persistente Festplatte. Würde dies bedeuten, dass sich alle meine Replikate auf demselben Knoten befinden würden? (ReadWriteOnce-Zugriffsmodus). Wenn dies der Fall ist, wäre mein Dienst im Falle eines Knotenfehlers nicht verfügbar.
  • Ein Volume basierend auf Flocker (Backend Persistent Disk). Was ist der empfohlene Weg, um es auf GKE zu installieren?

Gibt es eine weitere interessante Option? Was würden Sie empfehlen ?

+0

Warum legen Sie die Dateien nicht in Google Cloud Storage? Sie können also beliebig viele Replikate ausführen und müssen sich nicht mehr um lokalen Speicher kümmern. – tex

Antwort

1

Verwenden von GCS (wie tex erwähnt) ist wahrscheinlich die einfachste Lösung (und wird sehr schnell von einem GKE-Cluster). Hier ist an answer that may help.

Wenn Sie besonderen Bedarf an lokalem persistenten Speicher haben, können Sie Google Persistent Disks verwenden, sie können jedoch nur an einer Stelle als schreibgeschützt bereitgestellt werden.

Petsets (derzeit Alpha) bietet eine bessere Unterstützung für verteilten persistenten im Cluster-Speicher, so dass Sie auch in das schauen können, wenn GCS nicht für Sie arbeitet.

+0

Ich habe die GCS-Lösung versucht. Ich musste [den Adapter] modifizieren (https://github.com/KnpLabs/Gaufrette/blob/master/src/Gaufrette/Adapter/GoogleCloudStorage.php), damit es mit der neueren Version von Google-api/guzzle funktioniert. Tatsächlich habe ich andere Abhängigkeiten, die mit einer neuen Version von guzzle arbeiten. Ich hatte eine schlechte Leistung, als ich lokal getestet habe, aber ich denke, dass dies auf mehrere API-Aufrufe von Gaufrette zurückzuführen ist. Verwenden Sie diese GCS-Option als URL für Bilder, die den GCS-Server direkt anzeigen sollen? Oder soll es zuerst meine API durchlaufen? – Neko

+0

Über die Petsets, wird es der "offizielle" empfohlene Weg sein, ein solches Bedürfnis zu bewältigen? – Neko

+0

PetSets stellen die Primitiven zum Verwalten von verteiltem persistentem Speicher bereit, aber es ist wahrscheinlich, dass etwas auf petSets erstellt wird, um eine einfachere Speicherabstraktion zu ermöglichen (zB [Cassandra] (http://blog.kubernetes.io/2016/07/thousand) -instances-of-cassandra-using-kubernetes-pet-set.html)). –

Verwandte Themen