2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Netflix 如何处理其容器平台 Titus 上 的孤儿 Pod 问题

作者:Claudio Masolo

  • 2023-12-13
    北京
  • 本文字数:1347 字

    阅读完需:约 4 分钟

Netflix 如何处理其容器平台 Titus上 的孤儿 Pod 问题

Netflix 工程团队介绍了他们如何调查、识别和解决 Titus 的“孤儿”pod 问题,揭示了从内核恐慌到 Kubernetes(k8s)的整个过程,并最终为操作人员提供了可用于理解节点消失原因的工具。


Netflix Titus 是 Netflix 开发的容器管理平台,于 2018 年开源。按照设计,它主要是用于在云中大规模运行容器,并专门针对 Netflix 的动态、高流量大型流媒体服务的独特需求和挑战而量身定制。


虽然孤儿 pod 在系统中占少数,但对批处理用户来说是一个很大的问题,因为他们会面临不确定性,缺少明确的返回代码可以指导他们做重试决策。孤儿 pod 是由于底层 Kubernetes Node 对象消失造成的。当一个节点消失时,将触发一个垃圾收集(GC)进程,删除相关的 pod。为了增强用户体验,Titus 使用了一个自定义控制器来维护 pod 和 Node 对象的历史记录,以保证信息透明度。然而,由于对于丢失原因缺乏令人满意的解释,他们决定对根本原因做进一步调查。


Node 可能因为各种原因消失,尤其是在云环境中。通常,云供应商会使用 Kubernetes 云控制器来检测底层服务器的丢失,并随后删除 Kubernetes 节点对象。然而,这并没有回答节点消失的关键问题。为了解决这个问题,Netflix 工程团队引入了一个注解来捕获终止原因,为理解节点消失的原因提供信息。


{     "apiVersion": "v1",     "kind": "pod",     "metadata": {          "annotations": {               "pod.titus.netflix.com/pod-termination-reason": "Something really bad happened!",...
复制代码


添加“pod-termination-reason”注解是其中一个关键的步骤。通过将该注解加入垃圾收集器控制器,并将其包含在可能意外终止 pod 或节点的进程中,Titus 实现了一种可以统筹兼顾的方法。与修正状态不同,使用注解可以兼顾历史考量而保留 pod 的完整性。现在,Titus 可以捕获各种终止原因,如抢占作业、硬件故障、用户干预或内核恐慌,并提供人类可读的消息。


考虑到 Linux 内核出现故障时可用的选项有限,处理内核故障是一项独特的挑战。受 Google Spanner“最后喘息”概念(节点在致命故障时发送 UDP 数据包)的启发,Titus 使用 netconsole 模块实现了一个解决方案。配置 netconsole,将 Linux 内核设置为在内核恐慌时发送 UDP 数据包,从而使平台在发生灾难性故障时也能捕获重要的信息。


最后一步是连接到 Kubernetes 并实现一个控制器:


  1. 监听 netconsole UDP 数据包。

  2. 识别内核恐慌,并将它们与 k8s 节点对象关联起来。

  3. 标注并删除与恐慌节点关联的 pod。

  4. 标注并删除恐慌节点。


该进程可以确保在检测到内核恐慌时立即采取行动,而不必等待垃圾收集器进程。注解充当文档,使操作人员能够清楚地了解节点和相关 pod 发生了什么。



Titus 显示 pod 在一个内核恐慌的节点上丢失的过程


他们引入的措施不仅直接解决了孤儿 pod 的问题,还为操作人员提供了重要的观察工具。现在,Titus 用户可以收到有关作业失败原因的详细信息,即使在内核恐慌的情况下也是如此。虽然标记由于这种严重事件而导致的作业失败可能并不是最理想的方法,但令人满意的是,这种方法增强了可观察性以及主动处理和纠正内核恐慌的能力。由于所有这些改进,Titus 显著增强了其功能,确保工程师和批处理用户都能获得更流畅的体验。


原文链接:

https://www.infoq.com/news/2023/12/orphaned-pods-netflix-titus/


2023-12-13 12:524129

评论

发布
暂无评论
发现更多内容

花2小时成tidb专家--云上资源特别贵kv业务的节省

TiDB 社区干货传送门

8.x 实践

TiDB 执行计划代价模型分析

TiDB 社区干货传送门

性能调优 TiDB 底层架构

我与tidb的十年,我的职业生涯中遇到的各式各样的数据库。

TiDB 社区干货传送门

社区活动 TUG 话题探讨

头部保险公司国寿财核心系统采用 TiDB 实现信创替换并实现重大突破

TiDB 社区干货传送门

实践案例

巴黎同款,六自由度技术还原赛场决定性瞬间!

快手技术

视频 渲染

包头等保测评中心电话是多少?在哪里?

行云管家

等保测评 包头 等保测评机构

解决tiup‘ssh: unable to authenticate’报错

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 扩/缩容

万界星空科技低代码云MES系统

万界星空科技

低代码平台 mes 云mes 万界星空科技 低代码云MES

记录一起非数据热点引起的TiKV负载不均衡

TiDB 社区干货传送门

故障排查/诊断

TiDB主键锁(primary key lock)问题诊断

TiDB 社区干货传送门

故障排查/诊断

ClkLog埋点分析系统支持漏斗分析

ClkLog

数据分析 埋点 用户行为分析 开源软件 用户画像

TiKV 事务介绍

TiDB 社区干货传送门

TiKV 源码解读

TiDB v7.5.3 发版,听说升级后又可以躺平两年

TiDB 社区干货传送门

版本升级 新版本/特性解读 7.x 实践

如何使用C# 获取Windows系统信息以及CPU、内存和磁盘使用情况

哦豁完蛋了

我当初为什么选择了tidb抛弃了postgresql

TiDB 社区干货传送门

性能测评

什么是CSPO及成为CSPO的好处?

ShineScrum

从原理到实践,GraphRAG 如何提升 LLM 的摘要总结能力?

可信AI进展

操作ArkTS页面跳转及路由相关心得

OpenTiny社区

开源 前端 OpenTiny ArkTS

堡垒机高可用主备模式部署定义以及优势讲解!

行云管家

等保 堡垒机 堡垒机品牌

INAIR 发布新款 AR 空间计算机 INAIR 2 ,定位移动大屏生产力工具

新消费日报

花第1小时成tidb专家--云上资源特别,贵公司让我省钱ap篇

TiDB 社区干货传送门

8.x 实践

手把手教你修改 TiDB 监控告警阈值

TiDB 社区干货传送门

集群管理

手摸手教你,从0到1开发一个Chrome浏览器插件

左诗右码

Chrome Extension

断崖式领先!百度搜索登顶AI产品榜国内第一

极客天地

解锁未来财富密码:AI自动化副业创收班——终身财富加速器

测吧(北京)科技有限公司

测试

解锁未来财富密码:AI自动化副业创收班——终身财富加速器

霍格沃兹测试开发学社

一年同行:我的TiDB社区之旅 

TiDB 社区干货传送门

人物访谈

GC异常导致空间不释放,如何通过 tikv-ctl recover-mvcc 修复

TiDB 社区干货传送门

故障排查/诊断

北京银行如何利用 TiDB 实现20个关键业务系统的高效运行

TiDB 社区干货传送门

解锁未来财富密码:AI自动化副业创收班-终身财富加速器

测试人

人工智能 软件测试

Netflix 如何处理其容器平台 Titus上 的孤儿 Pod 问题_云原生_InfoQ精选文章