kubernetes-lxcfs解决资源可见性问题

一. 背景:

      在默认的 Docker 或 Kubernetes 环境中,当一个进程运行在容器里时,它通过 /proc 文件系统看到的系统资源(如 CPU 数量、内存总量、内存使用量、交换空间等)是宿主机的资源视图,而不是该容器被限制的资源量。举个例子:  假如你有一个k8s集群,所有node节点配置都是32C128G的, 然后部署了一个pod,它的内存限制 limits.memory 被设置为 1G。当进入这个容器内部,执行 free -h 或 top 命令时,你看到的内存将是宿主机的内存128G,而不是1G。同样,执行 nproc 或查看 /proc/cpuinfo,看到的也是宿主机的总 CPU 核心数,而不是该容器被限制的 CPU 份额(如 1C)。

导致的问题:

  1. 应用程序配置错误:比如基于 JVM 的(如 Java, Scala),会在启动时根据系统的总内存来自动分配堆大小。一个本来只想用 256M 内存的 Java 程序,如果它看到主机有 16G 内存,可能会尝试分配 4G 的堆内存,最终很快就会被 Kubernetes 的 OOMKiller(内存溢出杀手)杀死。

  2. 监控工具失效:容器内传统的监控命令(topfreehtop)变得无意义,因为它们无法反映容器真实的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值