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部署