如何减少kubernetes系统资源的CPU限制?
我希望将我的GKE集群中的核心数量保持在3以下。如果K8s复制控制器和吊舱的CPU限制从100米减少到最多50米,这变得更加可行。 否则,K8s吊舱单独占用一个核心的70%。
我决定不增加节点的CPU功率。 这在我看来在概念上是错误的,因为CPU限制被定义为在核心中测量。 相反,我做了以下事情:
这是很多工作,可能很脆弱。 即将到来的K8版本的任何进一步变化,或者GKE配置的变化,都可能会使其失效。
那么,有没有更好的方法?
更改默认名称空间的LimitRange spec.limits.defaultRequest.cpu
应该是更改新Pod的默认合法解决方案。 请注意,LimitRange对象是命名空间的,所以如果你使用额外的命名空间,你可能想要考虑一个合理的默认值是什么。
正如你指出的那样,这不会影响kube-system命名空间中的现有对象或对象。
kube-system命名空间中的对象大都是根据经验确定的 - 根据观察值。 改变这些可能会产生不利影响,但如果您的集群非常小,则可能不会。
我们有一个公开的问题(https://github.com/kubernetes/kubernetes/issues/13048)根据总群集大小调整kube-system请求,但这还没有实现。 我们还有一个未解决的问题(https://github.com/kubernetes/kubernetes/issues/13695),可能会对某些kube系统资源使用较低的QoS,但同样尚未实施。
其中,我认为#13048是实现你所要求的正确方法。 就目前而言,答案是“有没有更好的办法”,可悲的是“不”。 我们选择了中等规模集群的默认设置 - 对于非常小的集群,您可能需要做你正在做的事情。
顺便提一下,如果您想在Google Cloud GCE上试用此功能。 如果您尝试更改像kube-dns这样的核心服务的CPU限制,您将会得到这样的错误。
spec:禁止:pod更新可能不会更改spec.containers[*].image
, spec.initContainers[*].image
, spec.activeDeadlineSeconds
或spec.tolerations
以外的spec.tolerations
(仅添加现有spec.tolerations
尝试Kubernetes 1.8.7和1.9.4。
所以此时你需要部署的最小节点是n1-standard-1。 此外,一旦你有几个豆荚和舵,你的CPU的8%几乎被Kubernetes自己一直吃掉。 即使你没有运行任何重要的负载。 我认为有很多轮询正在进行,并确保群集响应,他们不断刷新一些统计数据。
链接地址: http://www.djcxy.com/p/30171.html上一篇: How to reduce CPU limits of kubernetes system resources?
下一篇: Studio: "Gradle is running. Proceed with Project closing?"