Da Kubernetes 1.8, so scheint es , ich zu deaktivieren Swap müssen auf meine Knoten (oder Satz --fail-swap-on
zu false
).
Ich kann den technischen Grund nicht finden, warum Kubernetes darauf besteht, dass der Swap deaktiviert wird. Ist das aus Performancegründen? Sicherheits Gründe? Warum ist der Grund dafür nicht dokumentiert?
kubernetes
swap
Jeroen Jacobs
quelle
quelle
Der Grund dafür ist, wie ich es verstehe, dass das Kubelet nicht für Swap-Situationen ausgelegt ist und das Kubernetes-Team dies nicht plant, da das Ziel darin besteht, dass Pods in den Speicher des Hosts passen.
von dieser Ausgabe
quelle
TL; DR, das Swap nicht richtig verwendet, ist nur ein fauler Hack, der ein schlechtes Verständnis der Speichersubsysteme und einen Mangel an grundlegenden Systemverwaltungsfähigkeiten demonstriert. Das Entwerfen von Infrastrukturdiensten und das Nichtverstehen dieser Systeme führt zwangsläufig zum Fehlschlagen.
Also, ich habe einige Kommentare dazu, dies scheint mir eher Faulheit zu sein als eine Funktion oder Anforderung. Es ist absolut möglich, Swap richtig zu handhaben, den Speicher zu analysieren und zu bestimmen, wie das Speichersubsystem richtig verwendet werden soll, ohne Swap zu treffen. Es gibt eine Vielzahl von Tools, die darauf aufbauen, und Sie können garantieren, dass ein Prozess Swap nicht so einfach verwendet, sodass der Leistungspunkt falsch ist. Es ist einfach faul zu programmieren, diese Instrumentierung nicht zu verwenden, und insgesamt wird das vollständige Entfernen von Swap zu Lasten der Systemleistung gehen. Der Schlüssel hier ist die ordnungsgemäße Verwendung. Ich bin damit einverstanden, dass das Auslagern von Pods auf Datenträger die Leistung beeinträchtigt. Es gibt jedoch eine Reihe von Dingen, die auf Datenträger ausgelagert werden sollten .
Darüber hinaus ist der Linux-Kernel so konzipiert, dass er Swap nutzt, und eine vollständige Deaktivierung wird negative Folgen haben. Eine bessere Möglichkeit, dies zu handhaben, besteht darin, die Pods im Hauptspeicher festzuhalten und nicht auf die Festplatte zu vertauschen. Reduzieren Sie den vfs-Cache-Druck, damit sie nicht vertauscht werden, es sei denn, dies ist unbedingt erforderlich Fehlschlagen von MALLOC, falls der Hauptspeicher erschöpft ist.
Abhängig von den Prozessen in den Containern kann ein schwerer Ausfall des Containers oder ein Tod durch den OOM-Killer zu ziemlich katastrophalen Ergebnissen führen. Ich verstehe jedoch, dass die Prozesse, die in diesen Containern ablaufen, im Idealfall zustandslos und kurzlebig sein sollten, aber in 20 Jahren, in denen Systeme ausgeführt werden, habe ich nicht ein einziges Mal gesehen, dass alle 100% der Zeit dem beabsichtigten Design folgen.
Darüber hinaus werden zukünftige Technologien wie nichtflüchtiger Speicher und neuere Speichersysteme wie Intel xpoint nicht berücksichtigt, mit denen der Hauptspeicher mithilfe von Hybridplatten- / Speichersystemen erheblich erweitert werden kann. Mit diesen Systemen können sie direkt als zusätzlicher Hauptspeicher verwendet oder Auslagerungsdateien verwenden, um den Hauptspeicher mit vernachlässigbarer Auswirkung auf die Leistung zu erweitern.
quelle
Es gibt ein Ticket, um es wieder zu aktivieren. Dort erhalten Sie mehr Einblick
https://github.com/kubernetes/kubernetes/issues/53533
quelle