有没有办法记录 Kubernetes Pod 内存使用情况,在一个容器 运行 一个基于 Node.js 构建的应用程序中
Is there a way to log Kubernetes Pod memory usage, in a container running an application built on Node.js
我有一个 Kubernetes pod,它会因为内存不足而关闭并自行重启。有多个子进程 运行 异步使用内存。我希望他们每个人都记录 Kubernetes pod 上 available/used 有多少内存。日志应该与其他 Node js 日志一起。
我知道 process.memoryUsage()
、os.totalmem()
、os.freemem()
其中分别提供如下输出
{"ts":"2021-04-21T10:52:50.299Z","msg":"Node Memory Stats:{\"rss\":125792256,\"heapTotal\":94720000,\"heapUsed\":48927816,\"external\":1668086}","logger":"___","level":"info"}
{"ts":"2021-04-21T10:52:50.300Z","msg":"OS/POD Total Memory:17179869184, OS/POD Free memory:87195648","logger":"___","level":"info"}
我想知道是否有任何方法可以对 pod 进行系统调用、获取其资源并登录 Node?
您可以简单地检查 /sys/fs/cgroup/cpu/
和 /sys/fs/cgroup/memory/
的值:
对于当前的CPU用法做一个
$ cat /sys/fs/cgroup/cpu/cpuacct.usage
对于当前的内存使用做一个
$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes
提示:确保您已将资源部分(请求和限制)添加到部署中,以便它可以根据 cgroup 计算使用量。
见
我有一个 Kubernetes pod,它会因为内存不足而关闭并自行重启。有多个子进程 运行 异步使用内存。我希望他们每个人都记录 Kubernetes pod 上 available/used 有多少内存。日志应该与其他 Node js 日志一起。
我知道 process.memoryUsage()
、os.totalmem()
、os.freemem()
其中分别提供如下输出
{"ts":"2021-04-21T10:52:50.299Z","msg":"Node Memory Stats:{\"rss\":125792256,\"heapTotal\":94720000,\"heapUsed\":48927816,\"external\":1668086}","logger":"___","level":"info"}
{"ts":"2021-04-21T10:52:50.300Z","msg":"OS/POD Total Memory:17179869184, OS/POD Free memory:87195648","logger":"___","level":"info"}
我想知道是否有任何方法可以对 pod 进行系统调用、获取其资源并登录 Node?
您可以简单地检查 /sys/fs/cgroup/cpu/
和 /sys/fs/cgroup/memory/
的值:
对于当前的CPU用法做一个
$ cat /sys/fs/cgroup/cpu/cpuacct.usage
对于当前的内存使用做一个
$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes
提示:确保您已将资源部分(请求和限制)添加到部署中,以便它可以根据 cgroup 计算使用量。
见