数据中心在 2024 年已经占到全球用电需求的 1.5%。对运行 Kubernetes 的团队来说,能耗不再只是设施部门的账单问题,而是容量规划、成本优化和可持续性治理的一部分。Kepler 这次重新架构的核心信号很明确:提高功耗估算准确性,同时邀请更多社区成员参与验证、部署和改进。
为什么“更准”比“能看到”更重要
很多团队已经能看到 CPU、内存、网络、磁盘等资源指标,但功耗指标更难处理。原因在于它通常不是单纯从容器层直接读出来的,而是需要结合节点、硬件、内核、工作负载行为以及模型估算。
Kepler 的价值就在这里:它尝试把 Kubernetes 工作负载和能耗关联起来,让平台团队可以回答更具体的问题:
- 哪些 namespace 或 workload 消耗了更多电力?
- 同样的服务部署在不同节点池上,能耗曲线是否不同?
- 扩容、降频、迁移、调度策略调整之后,功耗是否真的下降?
- 成本优化是否只是把延迟、稳定性或能耗转移到了别处?
重新架构的意义,不只是“换一套内部实现”。对使用者来说,它意味着项目正在把功耗准确性放到更核心的位置:指标采集、模型推断、导出接口和社区验证都需要变得更可靠。
Kepler 适合放在哪个观测链路里
可以把 Kepler 看成 Kubernetes 可观测性里的“能耗层”。它不替代 Prometheus、Grafana 或 OpenTelemetry,而是补上过去经常缺失的一类指标。
一个实用的落点是:
- Kepler 在每个节点上采集和估算能耗相关指标;
- Prometheus 抓取 Kepler 暴露的 metrics;
- Grafana 展示 namespace、pod、node 维度的趋势;
- 平台团队把结果和调度、容量、成本数据放在一起分析。
这样做的好处是不用把能耗治理做成孤立项目。它可以进入已有的 SRE 工作流:告警、容量评审、发布复盘、资源配额管理都能逐步加入功耗视角。
可以这样实践:在集群里快速接入 Kepler 指标
下面示例假设你已经有一个可用的 Kubernetes 集群,并且集群里有 Prometheus Operator。具体安装方式和版本请以你的环境为准;这里的重点是展示一条可以改造的接入路径。
# 1. 创建命名空间
kubectl create namespace kepler
# 2. 使用 Helm 安装 Kepler(仓库名和 chart 名请按你采用的发行方式调整)
helm repo add kepler https://sustainable-computing-io.github.io/kepler-helm-chart
helm repo update
helm install kepler kepler/kepler --namespace kepler
# 3. 查看 DaemonSet 是否在节点上运行
kubectl -n kepler get pods -o wide
# 4. 查看 Kepler 暴露的 Service
kubectl -n kepler get svc
如果你的 Prometheus 使用 ServiceMonitor,可以增加一个监控对象。下面的 selector 需要根据实际 chart 生成的 label 调整:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kepler
namespace: kepler
spec:
namespaceSelector:
matchNames:
- kepler
selector:
matchLabels:
app.kubernetes.io/name: kepler
endpoints:
- port: http
path: /metrics
interval: 30s
应用配置:
kubectl apply -f kepler-servicemonitor.yaml
接入后,可以先从这类 PromQL 查询开始探索。不同版本暴露的指标名可能不同,先在 Prometheus UI 中搜索 kepler 前缀最稳妥:
# 示例:查看 Kepler 相关指标是否已经被抓取
{__name__=~"kepler_.*"}
如果你要把它用于治理,不建议一上来就设硬性目标。更好的第一步是建立基线:连续观察一到两周,把功耗趋势与发布、扩容、批处理任务、节点池变化对应起来。
准确性需要社区一起校准
功耗准确性很难只靠一个项目团队在实验室里解决。真实环境太复杂:服务器型号不同,CPU 架构不同,电源管理策略不同,工作负载也从 Web 服务到 AI 推理、批处理、数据库各不相同。
这也是 Kepler 发出社区号召的原因。社区可以在几个层面提供帮助:
- 在更多硬件和云环境里部署并反馈结果;
- 对比机架级、电表级或云厂商能源数据,帮助校准估算;
- 补充不同工作负载类型下的样本;
- 改进文档、Helm chart、仪表盘和故障排查流程;
- 把功耗指标接入调度、成本和容量工具链。
换句话说,Kepler 的“准确”不是一个静态声明,而是一个持续工程过程。越多真实集群参与,模型和采集链路就越有机会逼近生产环境的真实情况。
采用建议:先观测,再治理
如果你的团队准备尝试 Kepler,可以按这个顺序推进:
- 先在非关键集群或单个节点池部署,确认权限、指标抓取和资源开销;
- 建立 namespace、workload、node 三个维度的基础看板;
- 用发布、扩缩容、批任务窗口验证功耗趋势是否符合预期;
- 不要把估算值直接用于财务结算,先用于趋势分析和工程决策;
- 把异常样本、硬件信息和使用反馈回馈给社区。
数据中心能耗占比继续上升时,平台团队需要的不只是“更绿色”的口号,而是能进入日常工程决策的指标。Kepler 的重构把问题推进了一步:让 Kubernetes 能耗测量更接近可用、可信、可协作演进的基础设施能力。