Kubernetes v1.37 将原生直方图(Native Histograms)支持升级为 Beta,并默认启用。该特性此前在 v1.36 以 Alpha 引入(KEP-5808),通过采用 Prometheus 原生直方图,Kubernetes 组件能以更高精度暴露延迟与耗时指标,同时显著降低遥测存储与抓取开销。
经典直方图要求指标作者预定义静态累积桶边界(le 标签),存在三大问题:桶边界靠猜,延迟分布变化后失去可见性;每个桶边界单独导出为一条时间序列,推高基数与 TSDB 存储成本;histogram_quantile() 依赖静态桶间线性插值,桶跨度大时分位数误差明显。
原生直方图以动态指数桶替代静态用户定义桶,单条时间序列内包含正负跨度、零阈值与指数缩放因子。优势包括:自动适配纳秒到小时级任意值域;时间序列数量最多减少 90%;默认设置下分位数计算最坏相对误差约 5%。
实现位于共享指标子系统 k8s.io/component-base/metrics,采用双暴露机制:经典桶与原生跨度同时输出,现有 Prometheus、仪表盘与告警规则无需改动。默认指数配置为 BucketFactor 1.1、MaxBucketNumber 160。kube-apiserver、kube-scheduler、kubelet、kube-controller-manager 与 kube-proxy 均自动继承支持。
抓取配置按 Prometheus 版本区分:3.0+ 推荐在 scrape_configs 中设置 scrape_native_histograms: true 与 always_scrape_classic_histograms: true;2.40–2.x 需以 --enable-feature=native-histograms 全局启用。迁移建议分四步:双格式采集、查询迁移至原生直方图语法、在预发/生产验证、确认无误后关闭经典格式抓取,时间序列数量可减少约 90%。回滚灵活,采集端设 scrape_native_histograms: false 即可,组件端可用 --feature-gates=NativeHistograms=false 关闭。
原生直方图正朝 GA 推进,SIG Instrumentation 将持续评估生态就绪度与性能表现,并规划经典静态桶的长期弃用路径。
🔗 原文:点击查看
#开发者 #工具 #Kubernetes #Prometheus #可观测性 #SIGInstrumentation #KEP5808 #监控 #云原生
@DevToolboxHub