overview
- 默认情况下,无限制cpu和内存的获取
- design proposal:https://github.com/kubernetes/community/blob/master/contributors/design-proposals/resources.md
- https://kubernetes.io/docs/admin/limitrange/
- https://kubernetes.io/docs/user-guide/compute-resources/
- https://kubernetes.io/docs/admin/resourcequota/walkthrough/
- https://kubernetes.io/docs/admin/resourcequota/
资源限制参数
主要参数
- spec.containers[].resources.limits.cpu
- spec.containers[].resources.limits.memory
- spec.containers[].resources.requests.cpu
- spec.containers[].resources.requests.memory
其他细节:
- 默认的设置依赖集群中的默认配置
- 如果requests没有设置,将和limits相同
- 关系满足:limits>=requests
- pod 的resouce等于其容器的总和
- 没设置值相当于0,等同于集群中的默认配置
cpu
- 单位:millicores 是cpu的衡量单位,用来衡量每个节点的计算能力,cpu核心数 * 1000, 用来代表节点的计算capacity。 详细定义参考
- 不同的云产生具有不同的cpu含义,允许小数。
- 参考: http://dockone.io/article/1102
https://kubernetes.io/docs/user-guide/compute-resources/#how-pods-with-resource-limits-are-run
spec.containers[].resources.requests.cpu
- 最终都会转化成,docker --cpu-share, --cpu-share只是个cpu的相对使用比例
- node 节点的总资源: cpu * 1000 m
- eg: 0.1 --> 100m 2 * 1000 --> 2000m
The spec.containers[].resources.limits.cpu
- 最终转化成docker --cpu-quota 参数
- --cpu-quota 与 --cpu-period 协同作用,来指定容器对CPU的使用要在多长时间内做一次重新分配,而--cpu-quota是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。最大限制cpu的使用率: --cpu-quota / --cpu-period
- eg: 200m 必须比requests大
设置建议
没有,fuck,官网没有案例,文档解释不清。
--cpu-period
100000代表100ms内测量资源配额的情况
--cpu-cfs-quota
开启cpu资源限制,默认是开启状态
如果没有足够的资源可以调度
- 增加更多的node到集群
- 检查不需要的pod
- 检查limit是否设置过大,如果limit设置cpu1.1,但是所有的node的最大值是1,将永远不可调度
明明空间的resouce limit
apiVersion: v1
kind: LimitRange
metadata:
name: mylimits
spec:
limits:
- max:
cpu: "2"
memory: 1Gi
min:
cpu: 200m
memory: 6Mi
type: Pod
- default:
cpu: 300m
memory: 200Mi
defaultRequest:
cpu: 200m
memory: 100Mi
defaultLimit:
cpu:500m
memory:400m
max:
cpu: "2"
memory: 1Gi
min:
cpu: 100m
memory: 3Mi
type: Container
参数说明:
- defaultRequest.* --> resource.request.*
- defaultLimit.* --> resource.limit.*
- max、min代表所有type的pod,或容器的和必须大于或者小于
结果
$ kubectl describe limits mylimits --namespace=limit-example
Name: mylimits
Namespace: limit-example
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
---- -------- --- --- --------------- ------------- -----------------------
Pod cpu 200m 2 - - -
Pod memory 6Mi 1Gi - - -
Container cpu 100m 2 200m 300m -
Container memory 3Mi 1Gi 100Mi 200Mi -
网友评论