You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在envtest测试环境中加载Metrics API?

在Kubebuilder的envtest中启用Metrics API

我正在构建一个包含垂直扩缩容组件的自定义Go/Kubebuilder Operator。我的Reconciler可以查询Metrics API获取Pod的基础内存和CPU指标,将其与阈值对比后修改所管理Pod的资源规格。

这段代码在真实集群中运行正常,我可以通过k8s.io/metrics Go API访问它,只要将其注册到Scheme,controller-runtime fake client就能正常工作。但Kubebuilder和fake client文档都强烈推荐优先使用envtest而非fake client,这正是我遇到问题的地方。

Metrics API文档指出:

Metrics API定义在k8s.io/metrics仓库中,必须启用API聚合层并为metrics.k8s.io API注册一个APIService。

我该如何在envtest配置中完成这些操作?目前我使用的是Kubebuilder提供的样板代码:

testEnv = &envtest.Environment{
    CRDDirectoryPaths:     []string{filepath.Join("..", "config", "crd", "bases")},
    ErrorIfCRDPathMissing: true,
}
cfg, err := testEnv.Start()

需要注意的是,Metrics API并非自定义资源,没有对应的CustomResourceDefinition。样板代码包含安装Prometheus Operator的选项,但这似乎无法启用Metrics API。


内容的提问来源于stack exchange,提问作者David Maze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:49:53