k8s pod资源设置随笔
k8s 通过requests、limits指明pod所需的资源情况,requests代表pod分配所需的最低标准,limits即为最大限制资源。两个设置会影响K8S为pod调度节点及判断当前集群资源是否足够分配,以下针对内存和CPU进行分别说明两者的区别。
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实例。
更多推荐
所有评论(0)