2015-10-28 15 views
6

Ich mag die Anzahl der Kerne in meinem GKE Cluster halten unten 3. Dies wird viel mehr möglich, wenn die CPU Grenzen der K8S Replikation Controller und Schoten von 100 m bis maximal 50 m reduziert werden. Ansonsten nehmen die K8s-Pods allein 70% eines Kerns.Wie CPU-Grenzen von Kubernetes Systemressourcen zu reduzieren?

I entschieden gegen die CPU-Leistung eines Knotens erhöht wird. Dies wäre meiner Meinung nach konzeptionell falsch, da das CPU-Limit definiert ist, um in Kernen gemessen zu werden. Stattdessen habe ich die folgenden:

  • limitranges/limits mit einer Version mit „50m“ als Standard-CPU Grenze (nicht notwendig, aber meiner Meinung nach Reinigern)
  • Patchen alle Replikations Controller im kube-System zu ersetzen Namensraum zu 50m für alle Behälter
  • Löschen ihre Hülsen
  • ersetzt alle nicht-rc Schoten im kube-System-Namensraum mit Versionen zu verwenden, die 50 m für alle Behälter verwenden

das ist eine Menge Arbeit und wahrscheinlich zerbrechlich. Alle weiteren Änderungen in zukünftigen Versionen von K8 oder Änderungen in der GKE-Konfiguration können dies verhindern.

So gibt es einen besseren Weg?

Antwort

3

Ändern des LimitRange des Standard-Namespace spec.limits.defaultRequest.cpu sollte zum Ändern des Standard für neuen Pods eine legitime Lösung sein. Beachten Sie, dass LimitRange-Objekte Namespaced sind. Wenn Sie also zusätzliche Namespaces verwenden, möchten Sie wahrscheinlich darüber nachdenken, was ein normaler Standard für sie ist.

Wie Sie darauf hinweisen, wird dies nicht vorhandene Objekte oder Objekte in dem kube-System-Namespace beeinflussen.

Die Objekte in der kube-System-Namespace meist empirisch sized wurden - basierend auf den beobachteten Werten. Diese Änderungen können sich nachteilig auswirken, aber möglicherweise nicht, wenn Ihr Cluster sehr klein ist.

Wir haben ein offenes Problem (https://github.com/kubernetes/kubernetes/issues/13048), um die Kube-Systemanforderungen basierend auf der gesamten Clustergröße anzupassen, aber das ist noch nicht implementiert. Wir haben ein anderes offenes Problem (https://github.com/kubernetes/kubernetes/issues/13695), vielleicht eine niedrigere QoS für einige Kube-System-Ressourcen zu verwenden, aber wiederum - noch nicht implementiert.

Davon Ich denke, dass 13048 # ist der richtige Weg zu implementieren, was Sie wieder zu fragen für‘. Für jetzt ist die Antwort auf "gibt es einen besseren Weg" leider "Nein". Wir haben Standards für mittelgroße Cluster gewählt - für sehr kleine Cluster müssen Sie wahrscheinlich tun, was Sie tun.