2016-06-06 30 views
3

Es scheint, dass Kubernetes drei Arten von Zugriffsmodus für persistente Datenträger unterstützt: ReadWriteOnce, ReadOnlyMany, ReadWriteMany. Ich bin wirklich neugierig auf die Scheduler-Strategie für einen Pod, die den ReadWriteOnce-Modus Volume verwenden. Zum Beispiel, ich habe eine RC erstellt, die Pod Number = 2, ich denke, die beiden Pods werden in den gleichen Host geplant, weil sie die Lautstärke verwenden, die Readwriteonce-Modus haben? Ich möchte wirklich den Quellcode dieses Teils wissen.Kubernetes persistenter Volume-Zugriffsmodus

Antwort

0

Wenn ein Pod einen Datenträger mit dem ReadWriteOnce-Zugriffsmodus bereitstellt, kann kein anderer Pod diesen bereitstellen. In GCE (Google Compute Enginge) sind nur ReadWriteOnce und ReadOnlyMany zulässig. Daher lädt entweder ein Pod das Volume ReadWrite oder ein oder mehrere Pods laden das Volume ReadOnlyMany.

Der Scheduler (Code here) lässt nicht zu, dass ein Pod geplant wird, wenn er ein GCE-Volume verwendet, das bereits read-write-fähig ist.

(Dokumentation Referenz für diejenigen, die die Frage nicht verstanden: persistent volume access modes)

+0

Vielen Dank für Ihre Antwort! es scheint, dass in 'isVolumeConflict' func, nur der Modus von GCEPD geprüft wird, was ist, wenn ich den readwriteonce-Modus für andere Arten von persistenten Speicher wie aws oder nfs verwenden? Gibt es einen Algorithmus zum Testen solcher Konflikte im Scheduler? – wangzhe

+0

Es scheint, dass isVolumeConflic Spaß nur GCEPD, AWSElasticBlockStore, RBD derzeit überprüfen? – wangzhe

+0

"Das Volume kann von einem einzelnen Knoten als schreibgeschützt gemountet werden" Ich denke, ReadWriteOnce bedeutet, dass dieses Volume auf nur einem k8s-Knoten installiert werden kann. Ich habe versucht, das gleiche ReadWriteOnce-Volume auf demselben Knoten um zwei Pods zu mounten. Und es funktioniert – Pao