O que significa o valor MEMÓRIA (bytes) em "nós superiores do kubectl" nos nós do Windows AKS?

O que significa o valor MEMÓRIA (bytes) em "nós superiores do kubectl" nos nós do Windows AKS?

Quando executo kubectl top nodesmeu cluster do Azure Kubernetes Services com nós do Windows, recebo um valor de volta para MEMORY(bytes):

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

Este número (2.407 Mi) não é oAlocadovalor retornado por kubectl describe node, que (quando convertido para a mesma unidade) é2.084 Mi:

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

(Tenho visto diferenças muito maiores em outras situações.)

Também não é igual à soma dos conjuntos de trabalho (6398 Mi) ou memória privada (3822 Mi) dos processos em execução no nó:

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

Também não é a soma da memória do Pod, conforme relatado por crictl stats(1531 Mi):

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

Também não corresponde à "memória total menos memória física livre" no nó (5101Mi):

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

Como indicado noDocumentos do Kubernetes, o valor destina-se a indicar o valor de um nóConjunto de trabalho. Então, o que isso significa e como é medido? Como posso usá-lo para monitorar a integridade de um nó ou os recursos disponíveis?

(Observação: na Internet, muitas vezes encontro referências ao Kubernetesservidor de métricas. No entanto, isso não parece estar em execução nos meus nós do Windows AKS.)

Atualização 2022-12-05:Eu sei que o número serve para indicar, em geral, quanto da memória do nó está sendo usada no momento. No entanto, eu realmente quero saber mais detalhes sobre isso. Como não corresponde aos números de memória do Pod, parece incluir processos do sistema, certo? Então, como pode ser comparado comAlocável(a MEMORY%porcentagem), qual é o que está disponível para Pods? E por que não corresponde aos números informados diretamente no nó (veja acima)? Resumindo, gostaria de saber como o número é realmente calculado - no Windows.

Responder1

O "MEMÓRIA (bytes)"o valor mostrado por kubectl top nodesnão é igual ao"Alocado"valor mostrado por kubectl describe <node>. O valor "Alocado" indica a quantidade de memória que foi alocada para o nó pelo agendador do Kubernetes, com base nas solicitações de memória e limites que foram definidos para os pods em execução no nó. O valor "MEMÓRIA (bytes)"O valor, por outro lado, indica a quantidade real de memória que está sendo usada pelos processos em execução no nó no momento em que o kubectl top nodescomando é executado.

Você pode usar o "MEMÓRIA (bytes)"valor mostrado por kubectl top nodespara monitorar a integridade de seus nós e garantir que eles tenham memória suficiente disponível para executar suas cargas de trabalho. Se o valor estiver consistentemente próximo de "Alocado" valor, pode indicar que o nó está com pouca memória e pode precisar ser redimensionado ou ter seus recursos realocados.

informação relacionada