Kubernetes 系统组件指标

    Kubernetes 组件以 生成度量值。 这种格式是结构化的纯文本,旨在使人和机器都可以阅读。

    在大多数情况下,可以在 HTTP 服务器的 端点上访问度量值。 对于默认情况下不公开端点的组件,可以使用 --bind-address 标志启用。

    这些组件的示例:

    在生产环境中,你可能需要配置 或 某些其他指标搜集器以定期收集这些指标,并使它们在某种时间序列数据库中可用。

    请注意,kubelet 还会在 /metrics/cadvisor/metrics/resource/metrics/probes 端点中公开度量值。这些度量值的生命周期各不相同。

    如果你的集群使用了 , 则读取指标需要通过基于用户、组或 ServiceAccount 的鉴权,要求具有允许访问 /metrics 的 ClusterRole。 例如:

    指标生命周期

    Alpha 指标 → 稳定指标 → 弃用指标 → 隐藏指标 → 删除

    稳定指标可以保证不会改变;具体而言,稳定意味着:

    • 指标本身不会被删除(或重命名)

    已弃用的指标表明该指标最终将被删除;要搞清楚对应版本,你需要检查其注解, 其中包括从哪个 kubernetes 版本开始,将不再考虑该指标。

    过期前:

    过期后:

    隐藏指标后,默认情况下,该指标不会发布以供抓取。要使用隐藏指标,你需要覆盖相关集群组件的配置。

    指标一旦删除,就不会发布。你无法通过重载配置来改变这一点。

    综上所述,管理员可以通过设置可执行文件的命令行参数来启用隐藏指标, 如果管理员错过了上一版本中已经弃用的指标的迁移,则可以把这个用作管理员的逃生门。

    该参数只能使用前一个次要版本。如果管理员将先前版本设置为 , 则先前版本中隐藏的度量值会再度生成。不允许使用过旧的版本,因为那样会违反指标弃用策略。

    以指标 A 为例,此处假设 A 在 1.n 中已弃用。根据指标弃用策略,我们可以得出以下结论:

    • 在版本 1.n 中,这个指标已经弃用,且默认情况下可以生成。
    • 在版本 1.n+1 中,这个指标默认隐藏,可以通过命令行参数 show-hidden-metrics-for-version=1.n 来再度生成。
    • 在版本 1.n+2 中,这个指标就将被从代码中移除,不会再有任何逃生窗口。

    如果你要从版本 升级到 1.13,但仍依赖于 1.12 中弃用的指标 A,则应通过命令行设置隐藏指标: --show-hidden-metrics=1.12,并记住在升级到 1.14 版本之前删除此指标依赖项。

    禁用加速器指标

    kubelet 通过 cAdvisor 收集加速器指标。为了收集这些指标,对于 NVIDIA GPU 之类的加速器, kubelet 在驱动程序上保持打开状态。这意味着为了执行基础结构更改(例如更新驱动程序), 集群管理员需要停止 kubelet 代理。

    现在,收集加速器指标的责任属于供应商,而不是 kubelet。供应商必须提供一个收集指标的容器, 并将其公开给指标服务(例如 Prometheus)。

    DisableAcceleratorUsageMetrics 特性门控 禁止由 kubelet 收集的指标。 关于。

    控制器管理器指标可提供有关控制器管理器性能和运行状况的重要洞察。 这些指标包括通用的 Go 语言运行时指标(例如 go_routine 数量)和控制器特定的度量指标, 例如可用于评估集群运行状况的 etcd 请求延迟或云提供商(AWS、GCE、OpenStack)的 API 延迟等。

    比如,对于 GCE,这些指标称为:

    接下来