本文发表时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。
Kubernetes 1.21:指标稳定性达到 GA
Kubernetes 1.21 标志着指标稳定性框架的毕业,并随之而来的是第一个官方支持的稳定指标。稳定指标不仅提供可支持性保证,而且指标稳定性框架还带来了在遇到有问题指标时可以使用的应急方案。
请在此处查看稳定的 Kubernetes 指标列表
什么是稳定指标,为什么我们需要它们?
从消费的角度来看,稳定指标是可以跨多个 Kubernetes 版本可靠地使用的指标,而不会有摄取失败的风险。
指标稳定性是一个持续的社区关注问题。集群监控基础设施通常假设某些控制平面指标的稳定性,因此我们引入了一种机制,用于将指标作为适当的 API 进行版本控制,并围绕正式的指标弃用流程提供稳定性保证。
指标的稳定性级别是什么?
指标目前可以有两个稳定性级别之一:alpha 或 stable。
Alpha 指标没有稳定性保证;因此,它们可以随时修改或删除。目前,所有 Kubernetes 指标都隐含地属于这一类别。
稳定指标可以保证不会更改,除非该指标在未来的 Kubernetes 版本中被标记为已弃用。不会更改,是指三件事:
- 指标本身不会被删除或重命名
- 指标的类型不会被修改
- 不会从此指标中添加或删除任何标签
从摄取的角度来看,添加或删除已存在的标签的可能值是向后兼容的,但标签本身不是。因此,允许从现有标签中添加或删除值。稳定指标也可以在未来的 Kubernetes 版本中被标记为已弃用,因为这是在元数据字段中跟踪的,实际上不会更改指标本身。
不允许从稳定指标中删除或添加标签。为了从现有的稳定指标中添加或删除标签,必须引入一个新指标并弃用稳定的指标;否则将违反兼容性协议。
指标是如何被弃用的?
虽然弃用策略仅影响稳定指标(而非 alpha 指标)的稳定性保证,但可以在 alpha 指标上选择性地提供弃用信息,以帮助组件所有者告知用户未来的意图并协助制定过渡计划。
正在进行弃用过程的稳定指标表示该指标最终将被删除。指标弃用生命周期大致如下(每个阶段代表一个 Kubernetes 版本):
已弃用的指标与其稳定的指标对应项具有相同的稳定性保证。如果一个稳定指标被弃用,那么被弃用的稳定指标保证不会更改。当弃用一个稳定指标时,会指定一个未来的 Kubernetes 版本作为该指标将被视为已弃用的时间点。
已弃用的指标的描述文本将以弃用通知字符串“(Deprecated from x.y)”为前缀,并且在指标注册期间将发出警告日志,这符合官方的 Kubernetes 弃用策略。
与它们稳定的指标对应项一样,已弃用的指标将自动注册到指标端点。在随后的版本中(当指标的 deprecatedVersion 等于 current_kubernetes_version - 4 时),已弃用的指标将变为隐藏指标。隐藏指标不会自动注册,因此默认情况下对最终用户隐藏。这些隐藏指标可以在它们达到隐藏状态后显式重新启用一个版本,以便为集群操作员提供迁移路径。
作为 Kubernetes 组件的所有者,我如何添加稳定指标?
在指标实例化期间,可以通过将元数据字段 StabilityLevel 设置为“Stable”来指定稳定性。当未显式设置 StabilityLevel 时,指标默认具有“Alpha”稳定性。请注意,在运行时确定字段的指标不能标记为 Stable。稳定指标将在预提交阶段的静态分析期间被检测到,并且必须由 sig-instrumentation 进行审查。
var metricDefinition = kubemetrics.CounterOpts{
Name: "some_metric",
Help: "some description",
StabilityLevel: kubemetrics.STABLE,
}
有关设置指标稳定性和弃用的更多示例,请参阅指标稳定性 KEP。
如何参与?
这个项目,像所有 Kubernetes 项目一样,是许多来自不同背景的贡献者共同努力的结果。我们非常感谢 Kubernetes 社区中所有帮助审查项目设计和实施的贡献者,包括但不限于以下人员:
- Han Kang (logicalhan)
- Frederic Branczyk (brancz)
- Marek Siarkowicz (serathius)
- Elana Hashman (ehashman)
- Solly Ross (DirectXMan12)
- Stefan Schimanski (sttts)
- David Ashpole (dashpole)
- Yuchen Zhou (yoyinzyc)
- Yu Yi (erain)
如果您有兴趣参与检测或 Kubernetes 指标系统的任何部分的设计和开发,请加入 Kubernetes 检测特别兴趣小组 (SIG)。我们正在迅速发展,并且始终欢迎新的贡献者。