本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。

聚焦 SIG Instrumentation

可观察性需要在正确的时间为正确的消费者(人类或软件)提供正确的数据,以便做出正确的决策。在 Kubernetes 的上下文中,拥有跨所有 Kubernetes 组件的集群可观察性的最佳实践至关重要。

SIG Instrumentation 通过提供最佳实践和工具来帮助解决此问题,所有其他 SIG 都使用这些实践和工具来检测 Kubernetes 组件,例如 *API 服务器*、*调度器*、*kubelet* 和 *kube-controller-manager*。

在本期 SIG Instrumentation 专题中,SIG ContribEx-Comms 技术主管 Imran Noor Mohamed 与 SIG Instrumentation 的主席 Elana HashmanHan Kang 讨论了 SIG 的组织方式、当前的挑战以及任何人如何参与和贡献。

关于 SIG Instrumentation

Imran (INM):您好,感谢您提供了解更多关于 SIG Instrumentation 的机会。您能否介绍一下自己、您的角色以及您是如何参与到 SIG Instrumentation 中的?

Han (HK):我于 2018 年开始加入 SIG Instrumentation,并于 2020 年成为主席。我主要参与 SIG Instrumentation 是因为指标方面的一些上游问题最终对 GKE 产生了不良影响。因此,我们最终启动了一项行动,以稳定我们的指标并将指标设置为适当的 API。

Elana (EH):我也在 2018 年加入了 SIG Instrumentation,并与 Han 同时成为主席。我当时在裸机 Kubernetes 集群上担任站点可靠性工程师 (SRE),并致力于构建我们的可观察性堆栈。我遇到了一些标签连接问题,其中 Kubernetes 指标与 kube-state-metrics (KSM) 不匹配,并开始参与 SIG 会议以改进这些问题。我帮助测试了 kube-state-metrics 的性能改进,并最终共同撰写了一份 KEP,用于在 1.14 版本中改进指标的可用性。

Imran (INM):很有趣!这是否意味着 SIG Instrumentation 涉及大量管道工作?

Han (HK):我不会说它涉及大量的管道工作,尽管它基本上触及了每个代码库。我们有自己的指标、日志和跟踪框架的专用目录,我们主要在这些目录中工作。我们确实需要与其他 SIG 交互以传播我们的更改,这使我们更像是一个横向 SIG。

Imran (INM):谈到与其他 SIG 的交互和协调,您能否描述一下 SIG 的组织方式?

Elana (EH):在 SIG Instrumentation 中,我们有两位主席,Han 和我,以及两位技术主管,David Ashpole 和 Damien Grisonnet。我们都作为 SIG 的负责人共同工作,以运行会议、分类问题和 PR、审查和批准 KEP、规划每个版本、在 KubeCon 和社区会议上进行演示以及撰写我们的年度报告。在 SIG 中,我们还有许多重要的子项目,每个子项目都由其子项目所有者管理。例如,Marek Siarkowicz 是 metrics-server 的子项目所有者。

由于我们是一个横向 SIG,我们的一些项目具有广泛的范围,需要来自专门的贡献者小组的协调。例如,为了指导 Kubernetes 迁移到结构化日志记录,我们成立了由 Marek 和 Patrick Ohly 组织的 结构化日志记录工作组 (WG)。WG 不拥有任何代码,但会帮助各种组件(如 *kubelet*、*scheduler* 等)将其代码迁移到使用结构化日志。

Imran (INM):仅通过浏览 章程,就可以清楚地看到 SIG Instrumentation 有很多子项目。您能重点介绍一些重要的项目吗?

Han (HK):我们有许多不同的子项目,我们迫切需要能够来帮助管理它们的人员。我们在树内(即在 kubernetes/kubernetes 仓库中)最重要的项目是指标、跟踪和结构化日志记录。我们在树外最重要的项目是 (a) KSM (kube-state-metrics) 和 (b) metrics-server。

Elana (EH):呼应这一点,我们希望为 kube-state-metrics 和 metrics-server 带来更多的维护人员。我们在 WG Structured Logging 的朋友也在寻找贡献者。其他子项目包括 klog、prometheus-adapter 以及我们刚刚启动的一个新子项目,用于收集高保真、可扩展的利用率指标,称为 usage-metrics-collector。所有项目都在寻找新的贡献者!

当前状态和正在进行的挑战

Imran (INM):对于 1.26 版本,我们可以看到管道中有大量相关的指标、日志和跟踪 KEP。您想指出上个版本的重要内容吗(可能是 alpha 和稳定里程碑候选版本)?

Han (HK):我们现在可以为主要的 Kubernetes 代码库中的每个指标生成文档!我们有一个非常棒的静态分析管道来启用此功能。我们还添加了功能指标,以便您可以查看指标来确定在给定时间在集群中启用了哪些功能。最后,我们添加了一个 component-sli 端点,这应该可以使人们轻松地为 *控制平面* 组件创建可用性 SLO。

Elana (EH):我们还一直在研究 *API 服务器* 和 *kubelet* 的跟踪 KEP,尽管两者都没有在 1.26 版本中毕业。我也对 Han 与 WG Reliability 合作扩展和改进我们的指标稳定性框架的工作感到非常兴奋。

Imran (INM):您认为 SIG Instrumentation 解决的 Kubernetes 特定挑战是什么?未来有哪些努力来解决这些挑战?

Han (HK):SIG Instrumentation 过去由于是一个横向 SIG 而遭受了一些损失。我们没有明显的代码放置位置,也没有一个好的机制来审核人们会随机添加的指标。我们多年来已经修复了这个问题,现在我们有专门的代码位置和一个可靠的机制来审核新的指标。我们现在还为指标提供稳定性保证。我们希望在 kubernetes 堆栈中提供完整的跟踪,并通过范例提供指标支持。

Elana (EH):我认为 SIG Instrumentation 是一个非常有趣的 SIG,因为它提供了与在其他 SIG 中参与的不同类型的机会。您不必成为软件开发人员也可以为我们的 SIG 做出贡献!我们所有的组件和子项目都专注于更好地了解 Kubernetes 及其在生产中的性能,这使我能够作为当时少数担任 SRE 的 SIG 主席之一参与其中。我喜欢我们为新手提供了通过使用、测试和提供对我们子项目的反馈来做出贡献的机会,这降低了入门门槛。由于许多这些项目都在树外,我认为我们的挑战之一是找出核心 Kubernetes SIG Instrumentation 子项目的范围、缺少什么,然后填补空白。

社区和贡献

Imran (INM):Kubernetes 看重社区胜过产品。对于任何希望参与 SIG Instrumentation 工作的人,有什么建议吗?他们应该从哪里开始(SIG 内对新贡献者友好的领域)?

Han(HK) 和 Elana (EH):参加我们每两周一次的分类会议!它们没有被录制,是提出问题和了解我们正在进行的工作的好地方。我们努力成为一个友好的社区,也是最容易入门的 SIG 之一。您可以查看我们最新的 KubeCon NA 2022 SIG Instrumentation 深入探讨,以更深入地了解我们的工作。我们也邀请您加入我们的 Slack 频道 #sig-instrumentation,并随时直接联系我们的任何 SIG 负责人或子项目所有者。

非常感谢您抽出时间并深入了解 SIG Instrumentation 的工作原理!