cpu memory resource

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              -

你可能感兴趣的:(cpu memory resource)