Kubernetes Sidecar 容器中的进程内存使用不匹配

Kubernetes Sidecar 容器中的进程内存使用不匹配

我有一个带有以下资源的 sidecar 容器:

resources:
  limits:
    memory: 512Mi
  requests:
    memory: 64Mi

然而,当我运行时top,我看到了这个:

  • envoy 和 pilot-agent 似乎分别使用了约 363MB 和 61MB
  • 顶部使用的内存为 54.6MB
  • 运行free -m结果如下;一个看似不相关的答案
$ free -m
              total        used        free      shared  buff/cache   available
Mem:         385307       47140      315018         292       23148      336021
Swap:             0           0           0

在边车上行驶

这里到底发生了什么,这些进程消耗了多少内存?

答案1

该 free 和 top 输出显示已使用约 50,000 MiB,而主机总内存约为 385,000 MiB。

容器共享一个内核,因此主机指标通常会显示节点范围的数字。即使命名空间仅显示您的进程和文件。这与专用虚拟机或物理主机不同,在专用虚拟机或物理主机中,操作系统仅用于支持您的应用程序。

每个容器编号需要查询 cgroups 编号。在 Stack Overflow 上查看几种执行此操作的方法:检查 kubernetes pod CPU 和内存. 其中许多都需要指标服务器。

请注意,不要将进程的常驻内存相加,并期望这是系统的确切内存使用量。这不包括共享内存或缓存。而且内核对内存做了奇怪的计算技巧。你的 3 个有效数字是正确的想法。不过,在进程数量较少、主要使用私有内存的简单情况下,这是一个很好的估计。

相关内容