¿Qué significa el valor MEMORIA (bytes) en los "nodos superiores de kubectl" en los nodos de Windows AKS?

¿Qué significa el valor MEMORIA (bytes) en los "nodos superiores de kubectl" en los nodos de Windows AKS?

Cuando ejecuto kubectl top nodesmi clúster de Azure Kubernetes Services con nodos de Windows, obtengo un valor de MEMORY(bytes):

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

Este número (2407Mi) No es elAsignadovalor devuelto por kubectl describe node, que (cuando se convierte a la misma unidad) es2084Mi:

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%)

(He visto diferencias mucho mayores en otras situaciones).

Tampoco es lo mismo que la suma de los conjuntos de trabajo (6398Mi) o memoria privada (3822Mi) de los procesos que se ejecutan en el nodo:

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

Tampoco es la suma de la memoria del Pod, según lo informado por 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

Tampoco coincide con "memoria total menos memoria física libre" en el nodo (5101Mi):

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

Como se indica en elDocumentos de Kubernetes, el valor está destinado a indicar un nodoConjunto de trabajo. Entonces, ¿qué significa eso y cómo se mide? ¿Cómo puedo usarlo para monitorear el estado de un nodo o los recursos disponibles?

(Nota: en Internet, a menudo encuentro referencias a Kubernetesservidor de métricas. Sin embargo, eso no parece estar ejecutándose en mis nodos de AKS Windows).

Actualización 2022-12-05:Sé que el número pretende indicar, en general, cuánta memoria del nodo se está utilizando actualmente. Sin embargo, realmente quiero saber más detalles sobre eso. Como no coincide con los números de memoria del Pod, parece incluir procesos del sistema, ¿verdad? Entonces, ¿cómo se puede comparar conAsignable(el MEMORY%porcentaje), ¿cuál es lo que hay disponible para Pods? ¿Y por qué no coincide con los números reportados directamente en el nodo (ver arriba)? En pocas palabras, me gustaría saber cómo se calcula realmente el número en Windows.

Respuesta1

El "MEMORIA (bytes)"El valor mostrado por kubectl top nodesno es el mismo que el "Asignado" valor que se muestra con kubectl describe <node>. El valor "Asignado" indica la cantidad de memoria que el programador de Kubernetes ha asignado al nodo, en función de las solicitudes de memoria y los límites que se han establecido para los pods que se ejecutan en el nodo. El "MEMORIA (bytes)"El valor, por otro lado, indica la cantidad real de memoria que utilizan los procesos que se ejecutan en el nodo en el momento en que kubectl top nodesse ejecuta el comando.

Puedes utilizar el "MEMORIA (bytes)" valor mostrado por kubectl top nodespara monitorear el estado de sus nodos y garantizar que tengan suficiente memoria disponible para ejecutar sus cargas de trabajo. Si el valor está constantemente cerca de "Asignado", puede indicar que el nodo se está quedando sin memoria y es posible que sea necesario cambiar su tamaño o reasignar sus recursos.

información relacionada