
Meine Maschine hat 48 CPUs. Bevor ich Pods erstelle, schalte ich 1-47 CPUs offline echo "0" > /sys/devices/system/cpuN/online
.
Wenn ich den ersten Pod für einen Knoten erstelle, schalte ich die CPU #1
per Echo online "1" > /sys/devices/system/cpu1/online
. Der Pod führt die CPU-Stress-Aufgabe aus und ich sehe, CPU0
dass er vollständig von diesem Pod genutzt wird. Der Pod nutzt 99-100% CPU
…
Wenn ich den zweiten Pod für denselben Knoten erstelle, bin ich online CPU #2 echo "1" > /sys/devices/system/cpu2/online
. Aber nur CPU0 ist voll ausgelastet CPU1
und CPU2
hatte keine Last. Und beide Pods laufen mit 50 % CPU-Auslastung.
Wenn ich mehr Pods für denselben Knoten erstelle, teilen sie sich einfach, CPU0
was ich an CPUs online habe. Alle anderen CPUs, die online sind, sind einfach im Leerlauf.
Mein Kubernetes version is 1.23.12
. Dies passiert in Version nicht 1.28
. In Version 1.28
laufen alle Pods auf unterschiedlichen CPUs mit 100 % Auslastung. Das YAML des Pods hat eine CPU-Beschränkung und eine Anforderung von 1.
Ich bin mir nicht sicher, ob es sich um einen Versionsfehler handelt 1.23.12
oder ob eine Konfiguration darin schief läuft. Jeder Kommentar ist willkommen.
Antwort1
Der CPU-Manager ist für die Zuweisung von CPU
Ressourcen an Pods in Kubernetes verantwortlich. Auf einem Knoten ist der CPU-Manager für die Aktivierung erweiterter Workload-Richtlinien verantwortlich. Je nachdem, ob der Pod gedrosselt ist und welche CPU-Kerne zum Planungszeitpunkt verfügbar sind, weist er beispielsweise mehrere CPU
intensive Pods an, Aufgaben auf verschiedene CPU-Kerne aufzuteilen.
CPU Manager befindet sich seit Kubernetes in der Betaphase v1.12
und ist standardmäßig aktiviert. Die --cpu-manager-policy
Option Kubelet wird verwendet, um die CPU Manager-Richtlinie zu definieren.
InKubernetes Version 1.23.14Sie haben einFehlerbehebungim Wandel.
Kubelet: fix GetAllocatableCPUs method in cpumanage.
AusVersion 1.26, der CPU-Manager wurde in Kubernetes allgemein verfügbar. Das bedeutet, dass die CPU-Manager-Funktion als stabil gilt und für den Einsatz in Produktionsumgebungen bereit ist. Das könnte also der Grund sein, warum Sie ein Problem in version 1.23.12
nicht in haben version 1.31
.