Google Cloud Platform上的Kubernetes配置默认的CPU请求和限制。
我使用了deamonsets,并且deamonset Pod应该使用尽可能多的CPU。
可以手动增加上限,但是在有新节点的情况下必须重新配置上限,并且必须将上限设置为比节点上可用的上限低得多,以便进行滚动更新以允许进行Pod调度。
这需要大量的手动操作,并且大部分时间只是不使用某些资源。有没有办法完全删除默认的CPU限制,以便Pod可以使用所有可用的CPU?
答案 0 :(得分:2)
Limit Range是一项通过命名空间中的Pod或Container限制资源的策略。
由
LimitRange
对象定义的限制范围提供了约束 可以:
在命名空间中强制每个Pod或容器使用最小和最大计算资源。
强制执行最小和最大存储 每个PersistentVolumeClaim请求一个命名空间。
- 对名称空间中的资源强制执行请求和限制之间的比例。
- 为命名空间中的计算资源设置默认请求/限制,并在运行时将其自动注入到容器中。
您需要找到名称空间的LimitRange
资源,并删除已定义的spec.limits.default.cpu
和spec.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的请求并进行修改(例如添加限制和其他默认值)。