k8s pod资源设置随笔


        k8s 通过requests、limits指明pod所需的资源情况,requests代表pod分配所需的最低标准,limits即为最大限制资源。两个设置会影响K8S为pod调度节点及判断当前集群资源是否足够分配,以下针对内存和CPU进行分别说明两者的区别。

内存

内存requsts和limits用于指明内存的最小值和上限,资源限制内部机制使用的是cgroup类型,单位为Mi或M。

kubernetes中的内存表示法

kubernetes为了防止这些问题的出现,采用了新标准,即使用M(Megabyte)表示1000 * 1000B,使用 Mi(Mebibyte)表示 1024 * 1024B。

CPU

CPU的单位是m(毫核)(***注意小写***),1000m即代表在一个单位时间内一个CPU资源的占有量,500m即在单位时间内占用一半CPU运行时间,设置值必须为整数。requests不仅会在调度时影响节点,同时也会影响空闲CPU未使用时间的分配。假设当前节点K8S可用的核心数为3(忽略k8s自身的pod资源占用),那么总CPU可以用资源为3000m,Pod A和Pod B分别申请500m、1000m,CPU分配示意如图:

在这里插入图片描述

limits 即现在Pod最高占用CPU资源。

备注

CPU为可压缩资源,对其控制不会直接影响Pod,但内存会直接影响运行,同时不对内存进行限制,且程序不对资源进行限制的情况下,可能会导致Pod耗费大量内存资源。
运行时资源超限时,可以对CPU资源进行限制,但内存超过限制时,会被K8S杀死,即容器发生了OOM,并重新创建Pod实例。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐