Kubernetes 节点 CPU 利用率

Posted

技术标签:

【中文标题】Kubernetes 节点 CPU 利用率【英文标题】:Kubernetes node CPU utilization 【发布时间】:2020-11-19 14:25:22 【问题描述】:

我正在尝试(学习)找出在 k8s 节点上利用 CPU(和 RAM)的最佳方式。 我的最终目标是确保集群中每个节点的 CPU 利用率高于 X%

到目前为止,我已经阅读了有关 cluster-autoscaler 和 HPA 的信息,但不确定它们是否会帮助我处理用例。

根据我的阅读:

cluster-autoscaler 用于根据副本数和 resources.request 与目标 ec2 实例上的可用 CPU 之间的比较来自动缩放节点 - 这不是基于流量/实际 CPU 使用率 HPA 基于 CPU/实际 cpu 使用率,但针对单个 pod

我基本上想达到kubectl top nodes 会显示所有节点都在使用 > X%(假设为 60%)的程度——理想情况下,如果我们达到 X2%(假设为 80%),则会触发自动缩放

关于如何处理这个用例的任何建议/指针? (或者我应该以某种方式使用这两种自动缩放机制的组合)

【问题讨论】:

【参考方案1】:

您可以组合使用 HPA 或/和集群自动缩放器和/或云提供商的自动缩放组。

HPA 基于您的 pod 的 CPU/内存,并可以扩展和缩减您的 K8s 部署。

云提供商 ASG 或自动扩缩组。使用基于虚拟机或实例,您可以根据自己的 CPU 和内存指标进行扩展和缩减。

集群自动扩缩器。当 pod 处于挂起状态并且它们无处可运行时,它可以工作,但如果您正在处理上述情况,这更像是一种安全的故障机制,或者可能适用于不需要很快出现的工作负载。

总而言之,您可以使用上述所有 3 个(或更少),但您必须查看哪些对您有用,以免它们相互冲突。一个潜在的问题是,当您的云 ASG 开始缩减时,您的 pod 也处于挂起状态,然后您的集群自动扩缩器(如果您启用了它)将启动,您可能会让它们都试图做相反的事情,导致集群只是无法安排任何 pod。

✌️☮️

【讨论】:

以上是关于Kubernetes 节点 CPU 利用率的主要内容,如果未能解决你的问题,请参考以下文章

通过 kube-prometheus 监控 k8s | 运维进阶

Kubernetes Prometheus:当容器内存使用量大于 kube 节点总内存容量时添加警报

kubernetes集群安装指南:master组件kube-scheduler部署

kubernetes集群安装指南:master组件kube-controller-manager部署

kubernetes架构

基于网络利用率或每秒请求数的 Kubernetes 扩展