k8s-pod资源限制
简介
在编排容器的时候,需要分配资源的使用。
默认pod资源是没有限制的,这样子会导致节点的资源可能被耗尽,引起多个pod出现问题。
手动分配好pod的资源使用,可以更好地利用机器的资源,也可以让hpa有一个标准,来动态扩容pod。
资源分配
在编排pod的时候,可以使用sepc.resources中配置资源限制。
一般限制的是CPU和内存的使用,也支持存储等其他资源。
资源限制有两种:
- request:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。
- limits:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。
request可以保证pod运行的时候,有最基础的资源保证;limit限制了pod最大能使用的资源,如果是内存超过limit就会出现OOM。
中央处理器资源单元
对 CPU 资源的限制和请求以 CPU 单元为单位进行度量。
在 Kubernetes 中,1 个 CPU 单元相当于 1 个物理 CPU 核心或 1 个虚拟核心。
1 CPU = 1000 mCPU
mCPU不支持小数,只能是整数。
内存资源单位
单位必须是整数,可以使用单位是:E、P、T、G、M、k,可以用 2 的幂数:Ei、Pi、Ti、Gi、Mi、Ki。
设置资源
resources:
requests:
memory: 200Mi
cpu: 100m
limits:
memory: 300Mi
cpu: 150m
limit和request设置多少合适呢?
设置多少可以根据不同的应用类型进行设置。
request可以保证基础的资源,集群调度pod的时候会更加合理。
limit可以略大于request,可以防止突增请求,hpa在扩容的时候需要有一个标准,这个标准就是limit。
所以在设置limit之后,也可以设置hpa动态扩容pod,来防止业务短时增长导致请求处理不过来。
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2022/2022-08/ks-pod-resources/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。