删除GCP Kubernetes上的默认CPU请求和限制

时间:2019-09-19 08:34:10

标签: kubernetes google-cloud-platform google-kubernetes-engine

Google Cloud Platform上的Kubernetes配置默认的CPU请求和限制。

我使用了deamonsets,并且deamonset Pod应该使用尽可能多的CPU。

可以手动增加上限,但是在有新节点的情况下必须重新配置上限,并且必须将上限设置为比节点上可用的上限低得多,以便进行滚动更新以允许进行Pod调度。

这需要大量的手动操作,并且大部分时间只是不使用某些资源。有没有办法完全删除默认的CPU限制,以便Pod可以使用所有可用的CPU?

4 个答案:

答案 0 :(得分:2)

Limit Range是一项通过命名空间中的Pod或Container限制资源的策略。

  

LimitRange对象定义的限制范围提供了约束   可以:

     
      
  • 在命名空间中强制每个Pod或容器使用最小和最大计算资源。

  •   
  • 强制执行最小和最大存储         每个PersistentVolumeClaim请求一个命名空间。

  •   
  • 对名称空间中的资源强制执行请求和限制之间的比例。
  •   
  • 为命名空间中的计算资源设置默认请求/限制,并在运行时将其自动注入到容器中。
  •   

您需要找到名称空间的LimitRange资源,并删除已定义的spec.limits.default.cpuspec.limits.defaultRequest.cpu(或只需删除LimitRange即可删除所有约束)。

答案 1 :(得分:2)

默认情况下,GKE在limits命名空间中创建一个名为default的{​​{3}}对象,如下所示:

apiVersion: v1
kind: LimitRange
metadata:
  name: limits
spec:
  limits:
  - defaultRequest:
      cpu: 100m
    type: Container

因此,如果要更改此设置,则可以对其进行编辑:

kubectl edit limitrange limits

或者您可以将其完全删除:

kubectl delete limitrange limits

注意:LimitRange对象中的策略由LimitRange强制执行,该规则默认在GKE中启用。

答案 2 :(得分:2)

可以通过两种方式配置资源限制。

在对象级别:

kubectl edit limitrange limits

默认情况下会创建此对象,其值为100m(CPU的1/10),当吊舱达到该限制时,它就会被杀死。


在清单级别: 通过yaml文件使用statefulSet,DaemonSet等,并在

上进行配置
spec.containers.resources

它看起来像这样:

spec:
  containers:
    resources:
      limits:
        memory: 200Mi
      requests:
        cpu: 100m
        memory: 200 Mi

如前所述,您可以修改配置或直接删除它们以消除限制。


但是,它们有一些原因限制了这些限制。 我从Google员工那里找到了一个视频,正在谈论它! [1]

答案 3 :(得分:1)

除了Eduardo Baitello提到的限制范围外,您还应该注意admission controllers,它可以拦截对Kubernetes API的请求并进行修改(例如添加限制和其他默认值)。