尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

kube-prometheus 版本演进实战指南:从 release-0.9 到 release-0.19 的核心变更与迁移要点

发布时间:2026/9/27 8:02:22

资讯中心
01
ARTICLE

kube-prometheus 版本演进实战指南:从 release-0.9 到 release-0.19 的核心变更与迁移要点

kube-prometheus 版本演进实战指南:从 release-0.9 到 release-0.19 的核心变更与迁移要点
云原生可观测性指标监控监控大盘告警【免费下载链接】kube-prometheusUse Prometheus to monitor Kubernetes and applications running on Kubernetes项目地址https://gitcode.com/gh_mirrors/ku/kube-prometheus点击查看免费下载kube-prometheus是一套通过 Jsonnet 生成 Kubernetes 监控栈Prometheus、Alertmanager、Grafana、node-exporter、kube-state-metrics 等的完整发行方案。本文以仓库根目录 CHANGELOG.md 为骨架梳理从 release-0.92021-08到 release-0.192026-09-24的演进脉络重点解读组件替换metrics-server / Perses、服务发现迁移EndpointSlices、安全加固、平台适配与告警规则变更并结合 jsonnet/kube-prometheus 下的源码与配置说明每个变更背后的实现。读完本文你将掌握 kube-prometheus 版本升级时最需要关注的配置开关、破坏性变更与迁移操作。版本与 Kubernetes 兼容矩阵从 CHANGELOG 的版本节奏可以看出每个大版本都会同步跟进新的 Kubernetes 版本Release发布日期支持的 Kubernetes核心主题release-0.192026-09-241.37Grafana 13.x 资源调整、metrics-server 备选、Perses addonrelease-0.182026-06-031.36大量组件版本更新release-0.172026-03-19—EndpointSlices、AlertmanagerConfig 选择器、指标迁移release-0.162025-08-28—标签一致性、AKS platform 调整release-0.152025-06-04—存储配置、apiserver 指标基数削减release-0.142024-09-12—ScrapeConfig、SLI 指标、runAsGrouprelease-0.132023-08-31—AKS platform、Windows 支持、多集群告警release-0.122023-01-19—prometheus-adapter 0.10.0、node-exporter 修复release-0.112022-06-15—安全加固、Pyrra、NetworkPoliciesrelease-0.102021-12-17—指标基数削减、Grafana LDAP、matcher 语法release-0.92021-08-191.21 / 1.22PodMonitor、AWS VPC CNI addon、自动化版本升级在 CI 侧Makefile 中的validate目标会针对 1.35/1.36/1.37 三个版本分别执行kubeconform校验validate-1.35、validate-1.36、validate-1.37确保生成的 manifests 与目标 Kubernetes 版本兼容。主线一Resource Metrics API 支持 metrics-server 替代 prometheus-adapter背景与动机默认情况下kube-prometheus 部署 prometheus-adapter 来提供 Kubernetes 资源指标 APImetrics.k8s.io它通过 Prometheus 查询派生 CPU 与内存指标并且还能提供自定义指标与外部指标 API。但根据 docs/customizations/metrics-server.md 的说明prometheus-adapter 正被 SIG Instrumentation 弃用社区建议自定义/外部指标场景迁移到 KEDA。由于 metrics-server 原生提供资源指标 API 而无需依赖 Prometheus 查询它成为资源指标部分的自然替代品。release-0.19 通过 PR #2851 正式加入 metrics-server 作为可选项官方计划在未来版本将metrics-server设为默认的resourceMetricsAPI。切换开关resourceMetricsAPI核心开关定义在 main.libsonnet 的values.common中common: { namespace: default, platform: null, // Resource metrics API implementation. Either prometheus-adapter (default) or metrics-server. resourceMetricsAPI:: prometheus-adapter, ... }切换方式来自 examples/jsonnet-snippets/metrics-server.jsonnet(import kube-prometheus/main.libsonnet) { values:: { common: { resourceMetricsAPI:: metrics-server, }, metricsServer: { kubeletInsecureTLS:: true, }, }, }在 main.libsonnet 中可以看到两个组件是互斥渲染的metricsServer: if $.values.common.resourceMetricsAPI metrics-server then metricsServer($.values.metricsServer) else {}, prometheusAdapter: if $.values.common.resourceMetricsAPI prometheus-adapter then prometheusAdapter($.values.prometheusAdapter) else {},注意两者都注册v1beta1.metrics.k8s.ioAPIService因此同一时刻只能激活其中一个 Provider。何时开启 kubeletInsecureTLS在 kind、minikube 等没有正确 kubelet serving 证书或没有 kubelet-serving CA的集群上需要设置kubeletInsecureTLS:: true生产集群若已配置好 kubelet PKI应保持默认值false。metricsServer 可用配置项根据 docs/customizations/metrics-server.mdvalues.metricsServer支持以下隐藏字段覆盖字段默认值说明replicas2metrics-server 副本数resources{requests: {cpu: 100m, memory: 200Mi}}资源请求/限制kubeletInsecureTLSfalse跳过 kubelet TLS 校验metricResolution15s从 kubelet 抓取指标的频率securePort10250metrics-server HTTPS 端口extraArgs[]附加命令行参数podAntiAffinityhardPod 反亲和类型hard或softpodAntiAffinityTopologyKeykubernetes.io/hostname反亲和拓扑键insecureSkipTLSVerifytrueAPIService TLS 校验priorityClassNamesystem-cluster-criticalPod 优先级类单节点集群适配默认配置部署 2 副本并启用硬 Pod 反亲和至少需要 2 个节点。在 minikube、单节点 kind 上需要覆盖values:: { metricsServer: { replicas:: 1, }, },生成与部署make manifests-metrics-server kubectl apply --server-side -f manifests/setup kubectl apply -f manifests/make manifests-metrics-server从 examples/metrics-server.jsonnet 构建整个manifests/树。完整可用示例见该文件其中已开启kubeletInsecureTLS:: true以适配 kind/minikube 类集群。如果你自建顶层 jsonnet还可以用辅助库 lib/resource-metrics-api.libsonnet 按resourceMetricsAPI自动选择正确的组件(import kube-prometheus/lib/resource-metrics-api.libsonnet)(kp)主线二Perses 作为 Grafana 的可选替代release-0.19 新 addonPerses addon 是什么release-0.19PR #2882加入了 Perses addon。Perses 是 CNCF Sandbox 级的可观测性可视化平台该 addon 通过 perses-operator。Perses 目前以 addon 形式集成一旦成熟可能被提升为内置开关类似metrics-server/prometheus-adapter的切换方式。addon 部署的资源根据 docs/customizations/perses.mdaddon 部署内容如下资源Kind说明perses-operatorDeployment、RBAC、ServiceAccount声明式管理 Perses CR4 个 CRDCustomResourceDefinitionPerses、PersesDashboard、PersesDatasource、PersesGlobalDatasourcePerses 实例PersesCR运行 Perses 服务端口 8080Prometheus 数据源PersesGlobalDatasourceCR代理查询到prometheus-k8sService仪表盘PersesDashboardCR默认 community-mixins 包ServiceMonitorServiceMonitor抓取 operator 指标PrometheusRulePrometheusRuleoperator 告警规则addon 还会给现有 PrometheusNetworkPolicy打补丁放行来自 Perses Pod 的 9090 端口查询见 perses.libsonnet。安全性注意Perses 默认与 kube-prometheus 内置 Grafana 保持一致禁用认证生产环境需自行开启 auth 与安全 cookie。存储方面仪表盘与数据源配置保存在 Kubernetes CR 中Perses 服务器只使用临时文件存储运行时状态因此 Pod 重启不会删除PersesDashboard或PersesGlobalDatasource对象。生成与应用make manifests-perses注意make manifests-perses会从 examples/perses.jsonnet 重新生成整个manifests/树不只是 Perses 对象。kubectl apply --server-side -f manifests/setup kubectl wait \ --for conditionEstablished \ --all CustomResourceDefinition \ --namespacemonitoring kubectl apply -f manifests/访问 Perses UIkubectl --namespace monitoring port-forward svc/perses 8080:8080打开http://localhost:8080。operator 会创建一个以PersesCR 命名的 Service默认perses仪表盘与 Prometheus 数据源均从 CR 加载。在已有集群上移除 Grafana可选由于kubectl apply不会删除从 manifests 中消失的资源已有集群上 Grafana 会继续运行。评估满意后按标签删除kubectl -n monitoring delete --ignore-not-foundtrue \ deployment,service,serviceaccount,servicemonitor,networkpolicy,prometheusrule,secret,configmap \ -l app.kubernetes.io/namegrafana定制项覆盖版本默认值见 versions.jsonperses: 0.54.0、persesOperator: 0.5.0{ values:: { common: { versions: { perses: 0.54.0, persesOperator: 0.5.0, }, }, }, }覆盖镜像默认镜像为persesdev/perses:vversion与persesdev/perses-operator:vversion可适配内网 registry{ values:: { common: { images: { perses: my-registry.example.com/perses:v0.54.0, persesOperator: my-registry.example.com/perses-operator:v0.5.0, }, }, }, }仪表盘查询选择器重写community-mixins 使用 kubernetes-mixin 默认 job 标签kube-prometheus 通过kubernetesControlPlane覆盖这些选择器addon 在导入时做同样重写community-mixinskube-prometheusjobcadvisorjobkubelet, metrics_path/metrics/cadvisorjobkube-apiserverjobapiserver同时 addon 设置prometheus.externalLabels.cluster为kube-prometheus以满足cluster仪表盘变量。若你的抓取标签不同可覆盖{ values:: { prometheus: { externalLabels: { cluster: my-cluster, }, }, perses: { cadvisorJobSelector: jobkubelet, metrics_path/metrics/cadvisor, kubeApiserverJobSelector: jobapiserver, }, }, }修改 Prometheus 数据源 URL默认数据源通过 Perses 服务器代理到http://prometheus-k8s.namespace.svc.cluster.local:9090见 perses.libsonnet 中prometheusGlobalDatasource的HTTPProxy定义local kp (import kube-prometheus/main.libsonnet) (import kube-prometheus/addons/perses.libsonnet) { values:: { common: { namespace: monitoring }, }, perses: { prometheusGlobalDatasource: { spec: { config: { plugin: { spec: { proxy: { spec: { url: http://my-prometheus.monitoring.svc.cluster.local:9090, }, }, }, }, }, }, }, }, };选择仪表盘包覆盖dashboardComponents。默认值为kubernetes、prometheus、alertmanager、node-exporter定义于 perses.libsonnet。裁剪子集或包含可选包blackbox-exporter、perses均可例如{ values:: { perses: { dashboardComponents: [ kubernetes, prometheus, alertmanager, node-exporter, blackbox-exporter, perses, ], }, }, }仪表盘覆盖范围默认 4 个包共生成 23 个PersesDashboardCR与 e2e 测试 perses_test.go 中minPersesDashboardObjects 23的断言一致kubernetes18 个控制平面/工作负载仪表盘、prometheus的prometheus-overview与prometheus-remote-write、alertmanager的alertmanager-overview、node-exporter的 2 个仪表盘。可选包包括blackbox-exporterblackbox-overview、persesperses-overview、thanos6 个 Thanos 组件仪表盘需启用 Thanos sidecar 才有数据、etcdetcd-overview需static-etcdaddon 或外部 etcd 监控。目前kube-state-metrics、prometheus-operator、prometheus-adapter、metrics-server在 community-mixins 中尚无对应 Perses 仪表盘。切回 Grafanamake manifests kubectl apply --server-side -f manifests/setup kubectl wait --for conditionEstablished --all CustomResourceDefinition --namespacemonitoring kubectl apply -f manifests/ # 删除 Perses CR实例与仪表盘是命名空间的全局数据源是集群级 kubectl -n monitoring delete --ignore-not-foundtrue perses/perses kubectl delete --ignore-not-foundtrue \ persesglobaldatasources.perses.dev/prometheus-datasource kubectl -n monitoring delete --ignore-not-foundtrue \ persesdashboards.perses.dev --all # operator 资源均带 app.kubernetes.io/part-ofperses-operator 标签 kubectl -n monitoring delete --ignore-not-foundtrue \ deployment,service,serviceaccount,servicemonitor,networkpolicy,prometheusrule,role,rolebinding \ -l app.kubernetes.io/part-ofperses-operator kubectl delete --ignore-not-foundtrue clusterrole,clusterrolebinding \ -l app.kubernetes.io/part-ofperses-operator如不再需要可删除perses.devCRDkubectl delete --ignore-not-foundtrue crd \ perses.perses.dev \ persesdashboards.perses.dev \ persesdatasources.perses.dev \ persesglobaldatasources.perses.dev端到端测试make test-e2e-perses在已部署 Perses 栈的集群上运行 Go e2e 测试不生成/应用 manifests需先完成部署export KUBECONFIG~/.kube/config make test-e2e-perses测试覆盖 Grafana 不存在、operator 就绪、Perses 实例就绪、CR 状态 Available 且非 Degraded、Service 健康端点、23 个仪表盘与全局数据源存在、operator 被 Prometheus 抓取up{jobperses-operator} 1等断言详见 perses_test.go。服务发现迁移到 EndpointSlicesrelease-0.17release-0.17PR #2752将 Prometheus 的服务发现迁移到 EndpointSlices。在 prometheus.libsonnet 中默认值即为serviceDiscoveryRole:: EndpointSlice,roleSpecificNamespaces会据此生成对应 RBAC见 prometheus.libsonnet当serviceDiscoveryRole EndpointSlice时授予discovery.k8s.io/endpointslices的get/list/watch权限当回退为Endpoints时则授予endpoints权限。该角色通过PrometheusCR 的spec.serviceDiscoveryRole字段见 prometheus.libsonnet下发给 Prometheus 实例。配套变更all-namespaces addon 也补充了 EndpointSlices 的 RBACPR #2760。升级时若自定义过角色或使用旧版 Endpoint 发现需检查权限是否匹配。Alertmanager 相关的破坏性变更移除 alertmanagerName 与 thanosSelectorrelease-0.17PR #2755alertmanagerName和thanosSelector配置选项从prometheus.libsonnet中移除。Thanos 相关配置在更早的 release-0.10PR #1543已开始弃用thanosSelector并引入mixin._config.thanos变量release-0.17 完成清理。从 prometheus.libsonnet 可以看到当前混入配置使用thanos.targetGroups与thanos.sidecar结构化配置。AlertmanagerConfig 默认按命名空间选择release-0.17PR #2747Alertmanager 默认只选择自身命名空间内的AlertmanagerConfigCR避免跨命名空间误选。若你依赖跨命名空间选择需要显式调整选择器。matcher 语法release-0.10PR #1508Alertmanager 的路由树与抑制规则改用新的matcher语法对自定义 alertmanager 配置的兼容性有影响。存储与 Secret 注入release-0.15PR #2651为 Prometheus 与 Alertmanager 服务器增加了存储配置选项release-0.14PR #2206支持向 alertmanager 注入 Secrets。指标、告警与基数控制指标迁移release-0.17PR #2809删除废弃的apiserver_storage_objects指标Kubernetes 1.34 起由apiserver_resource_objects取代。若你的规则或仪表盘仍引用旧指标需要同步更新。release-0.14PR #2269kube_node_status_capacity_pods指标改用新形式。release-0.10PR #1406、#1396、#1553裁剪高基数的 cAdvisor 指标删除废弃的apiserver_longrunning_gauge、apiserver_registered_watchers、coredns_cache_misses_total。release-0.15PR #2531削减 apiserver 指标基数。release-0.14PR #2496新增 Kubernetes 组件 SLI 指标/metrics/slis端点对应 prometheus.libsonnet 中 ClusterRole 对非资源 URL/metrics/slis的get权限。告警修复release-0.17PR #2786修复InfoInhibitor告警在同一个命名空间内多个 info 级告警同时触发时出现的重复 series 报错。release-0.11PR #1729根据默认 kubelet GC 行为调整NodeFilesystemSpaceFillingUp阈值release-0.10PR #1357将文件系统空间告警的 warning 阈值调整为 20%。release-0.11PR #1628修复cluster:node_cpu:ratio查询。release-0.9ruleSelector默认匹配全部规则修复 kube-state-metrics 指标 denylist 正则。安全加固的演进从 release-0.11 到 release-0.14kube-prometheus 进行了成体系的安全加固升级时若使用自定义 PodSecurityPolicy 需同步核对release-0.11PR #1591禁用不必要的、可访问 K8s API 的环境变量注入。release-0.11PR #1593所有组件显式声明allowPrivilegeEscalation: false。release-0.11PR #1600禁止写入根文件系统只读 rootfs。release-0.11PR #1610删除 Linux capabilities仅保留 node-exporter 所需的CAP_SYS_TIME。release-0.11PR #1650为 kube-prometheus 所有组件添加 NetworkPolicy。release-0.11PR #1584CI 中用 kubescape 扫描生成的 manifests对应 Makefile 中的kubescape目标阈值见KUBESCAPE_THRESHOLD。release-0.14PR #2424为所有组件添加runAsGroup。release-0.14PR #2178添加securityContext项与 Pod security 标签。release-0.13PR #2185移除 prometheus-adapter 废弃的--logtostderr参数。release-0.12PR #1808启用 prometheus ServiceAccount 的automountServiceAccountToken。对应地main.libsonnet 中生成的 Namespace 带pod-security.kubernetes.io/warn: privileged标签。平台与部署形态支持云厂商与平台AKSrelease-0.12PR #1869首次加入 AKS platformrelease-0.13PR #1997正式将 AKS 纳入 platforms.libsonnetrelease-0.16PR #2665调整了 AKS platform 的 Service 名称与job标签。所有 platform 补丁集中维护在 jsonnet/kube-prometheus/platforms。AWS VPC CNIrelease-0.9PR #1307将 AWS VPC CNI 转为控制平面 addonrelease-0.16PR #2668为 AWS VPC CNI Service 与 ServiceMonitor 补充标签。EKS 修复release-0.12PR #1810修复 EKS/AKS 的diskDeviceSelector正则。工作负载形态Windows 支持release-0.13PR #2048改用 HostProcess 方式支持 Windows 节点替代旧的static_configs方式。Prometheus Agent 模式release-0.11PR #1472增加 prometheus-agent 用法示例examples/prometheus-agent.jsonnet。注意官方文档特别提示在 Operator 下以 Agent 模式运行需要 strategic merge patch不被推荐且不提供支持需自担风险。Pyrra SLO 组件release-0.11PR #1667将 Pyrra 作为可选组件加入。kube-proxy PodMonitorrelease-0.9PR #1230新增 kube-proxy 的 PodMonitorrelease-0.11PR #1630更新其选择器。CoreDNS 专属 Servicerelease-0.13PR #2107创建独立 Service 暴露 CoreDNS 指标。node-exporter 参数化release-0.12PR #1887增加被忽略网络设备的参数release-0.13PR #2074默认禁用 btrfs collector。组件版本一览组件版本集中管理在 versions.json由自动化脚本维护组件镜像在 main.libsonnet 中由版本号拼接组件版本release-0.19prometheus3.14.0alertmanager0.34.1grafana13.2.2prometheusOperator0.94.1kubeStateMetrics2.20.0nodeExporter1.12.1blackboxExporter0.28.0prometheusAdapter0.12.0metricsServer0.9.0kubeRbacProxy0.22.1configmapReload0.15.0pyrra0.10.2perses0.54.0persesOperator0.5.0release-0.19 针对 Grafana 13.x 提高了其内存 requests/limitsPR #2890。升级与迁移实践依赖库升级kube-prometheus 以 jsonnet 库形式被消费更新依赖使用 jsonnet-bundlerjb update详见 docs/customizing.md。若希望引入新版本的关键特性如 metrics-server、Perses addon、EndpointSlices RBAC务必先升级到对应 release。重新生成并应用 manifestsmake manifests # 默认prometheus-adapter Grafana make manifests-metrics-server make manifests-perses kubectl apply --server-side -f manifests/setup kubectl wait --for conditionEstablished --all CustomResourceDefinition --namespacemonitoring kubectl apply -f manifests/kubectl apply是声明式合并不会删除从新 manifests 中消失的资源。因此升级时需要注意切换到 Perses 后 Grafana 仍会运行需按上文标签删除切换到 metrics-server 后 prometheus-adapter 资源需手动清理两者都注册metrics.k8s.ioAPIService不能并存移除alertmanagerName/thanosSelector后旧的 Alertmanager 命名与 Thanos 配置需按新结构迁移EndpointSlices 迁移后若自定义了 RBAC 需补齐discovery.k8s.io/endpointslices权限官方 all-namespaces addon 已在 release-0.17 补齐。校验与测试make validate针对 Kubernetes 1.35/1.36/1.37 运行 kubeconform 校验生成的 manifestsmake test-e2e运行整体端到端测试make test-e2e-metrics-servermetrics-server 专用 e2e 测试make test-e2e-persesPerses addon 专用 e2e 测试Makefile 中通过PERSES_ADDONtrue环境变量控制。总结从 release-0.9 到 release-0.19kube-prometheus 完成了三条主线演进资源指标 API 的 provider 解耦metrics-server 作为 prometheus-adapter 的轻量替代、可视化平台的插件化Perses addon 作为 Grafana 的可选替代、以及服务发现与安全模型的现代化EndpointSlices、NetworkPolicy、Pod Security 标签。对使用者而言升级时最需要关注的是破坏性变更alertmanagerName/thanosSelector移除、AlertmanagerConfig 命名空间选择、指标更名与新增配置开关resourceMetricsAPI、dashboardComponents。本文涉及的配置字段、示例与测试均可从仓库的 jsonnet/kube-prometheus、examples 与 docs 目录中进一步验证。赞分享云原生可观测性指标监控监控大盘告警【免费下载链接】kube-prometheusUse Prometheus to monitor Kubernetes and applications running on Kubernetes项目地址https://gitcode.com/gh_mirrors/ku/kube-prometheus点击查看免费下载相关推荐Astro 6 核心版本演进全解析从 6.0.0 到 6.4.7 的关键变更与迁移要点Astro 6 核心版本演进全解析从 6.0.0 到 6.4.7 的关键变更与迁移要点 导读 本文以 Astro 官方仓库中 packages/astro/C前端Web框架SSR前端构建Streamlink 版本演进全景从 0.0.1 到 8.6 的核心变更、安全修复与迁移要点Streamlink 版本演进全景从 0.0.1 到 8.6 的核心变更、安全修复与迁移要点 导读 本文以 Streamlink 官方版本记录 docs/c音视频Texture 3.x 版本演进全解析从 2.2 到 3.2 的核心变更、实验特性与迁移要点Texture 3.x 版本演进全解析从 2.2 到 3.2 的核心变更、实验特性与迁移要点 本文以 Texture 官方 CHANGELOG.md http移动开发UI组件上一篇告别 BT 下载龟速一份每天更新 114 个公共 Tracker 的提速清单 trackerslist 全解析下一篇攻克Android权限弹窗消失难题EasyPermissions焦点管理完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。