Was bedeutet der Wert MEMORY(Bytes) in „kubectl top nodes“ auf Windows AKS-Knoten?

Was bedeutet der Wert MEMORY(Bytes) in „kubectl top nodes“ auf Windows AKS-Knoten?

Wenn ich kubectl top nodesmeinen Azure Kubernetes Services-Cluster mit Windows-Knoten ausführe, erhalte ich einen Wert zurück für MEMORY(bytes):

PS >kubectl top nodes
NAME                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
...
akswinxxxxxxxxx                     163m         8%     2407Mi          55%
...

Diese Nummer (2407Mi) ist nicht derZugewiesenDer von zurückgegebene Wert kubectl describe node(umgerechnet in die gleiche Einheit) ist2084Mi:

PS > kubectl describe node akswinxxxxxxxxx
...
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests         Limits
  --------           --------         ------
  cpu                1070m (56%)      500m (26%)
  memory             2134435Ki (48%)  2412Mi (56%)
  ephemeral-storage  0 (0%)           0 (0%)

(In anderen Situationen habe ich viel größere Unterschiede festgestellt.)

Es ist auch nicht dasselbe wie die Summe der Arbeitssätze (6398Mi) oder privater Speicher (3822Mi) der auf dem Knoten laufenden Prozesse:

PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object WorkingSet64 -Sum).Sum / 1024 / 1024
6397.7109375
PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object PrivateMemorySize64 -Sum).Sum / 1024 / 1024
3822.328125

Es ist auch nicht die Summe des Pod-Speichers, wie berichtet von crictl stats(1531Mi):

PS >crictl stats
CONTAINER           CPU %               MEM                 DISK                INODES
2bdfd79f404af       0.00                33.39MB             71.3MB              0
32ea5bc86bacf       0.00                34.36MB             37.75MB             0
511eb449bc0ae       0.00                37.55MB             71.3MB              0
52a1bd98c3558       3.09                222MB               147.8MB             0
6428530b2b53f       0.00                73.54MB             37.75MB             0
6bd5050e8bb4c       0.00                37.68MB             37.75MB             0
78a51582874ec       0.00                241.5MB             104.9MB             0
bb1224de3c87e       0.00                34.14MB             71.3MB              0
e19566f08ca1e       0.00                38.27MB             37.75MB             0
e633436686347       0.00                329.5MB             172MB               0
f82c4306b4692       0.00                34.79MB             37.75MB             0
fa36b455d852f       0.00                235.8MB             104.9MB             0
fe7d9f0193f17       0.00                178MB               306.2MB             0

Es stimmt auch nicht mit "Gesamtspeicher abzüglich freiem physischen Speicher" auf dem Knoten überein (5101Mi):

PS >$OS =  Get-WmiObject -Class WIN32_OperatingSystem
PS> ($OS.TotalVisibleMemorySize - $OS.FreePhysicalMemory)/1024
5101.25390625

Wie in derKubernetes-Dokumentesoll der Wert dieWorkingset. Was bedeutet das also und wie wird es gemessen? Wie kann ich es verwenden, um den Zustand eines Knotens oder die verfügbaren Ressourcen zu überwachen?

(Hinweis: Im Internet finde ich oft Verweise auf Kubernetes'sMetrik-Server. Dies scheint jedoch auf meinen AKS-Windows-Knoten nicht zu laufen.)

Aktualisierung 05.12.2022:Ich weiß, dass die Zahl im Allgemeinen angeben soll, wie viel Speicher des Knotens derzeit verwendet wird. Ich möchte jedoch wirklich mehr Details darüber wissen. Da es nicht mit den Pod-Speicherzahlen übereinstimmt, scheint es Systemprozesse einzuschließen, richtig? Wie kann es also verglichen werden mitZuordenbar(der MEMORY%Prozentsatz), der für Pods verfügbar ist? Und warum stimmt er nicht mit den direkt auf dem Knoten gemeldeten Zahlen überein (siehe oben)? Kurz gesagt, ich würde gerne wissen, wie die Zahl tatsächlich berechnet wird – unter Windows.

Antwort1

Der "SPEICHER (Bytes)" Wert, der angezeigt wird, kubectl top nodesist nicht der gleiche wie der "Zugewiesen"-Wert, der durch angezeigt wird kubectl describe <node>. Der Wert „Zugeordnet“ gibt die Speichermenge an, die dem Knoten vom Kubernetes-Scheduler zugewiesen wurde, basierend auf den Speicheranforderungen und -grenzen, die für die auf dem Knoten ausgeführten Pods festgelegt wurden. Der „SPEICHER (Bytes)"-Wert gibt dagegen die tatsächliche Speichermenge an, die von den Prozessen verwendet wird, die zum Zeitpunkt der kubectl top nodesAusführung des Befehls auf dem Knoten ausgeführt werden.

Du kannst den ... benutzen "SPEICHER (Bytes)"-Wert, der angezeigt wird, kubectl top nodesum den Zustand Ihrer Knoten zu überwachen und sicherzustellen, dass sie über ausreichend Speicher verfügen, um ihre Arbeitslasten auszuführen. Wenn der Wert konstant nahe dem "Zugewiesen"-Wert, kann dies darauf hinweisen, dass der Knoten nicht mehr genügend Arbeitsspeicher hat und seine Größe angepasst oder seine Ressourcen neu zugewiesen werden müssen.

verwandte Informationen