2024年12月11日,OpenAI出现了全球性的严重宕机事件,这次事件导致OpenAI的所有服务包括ChatGPT、API和 Sora等都受到了严重影响,甚至出现无法访问的情况。关于此次事件的起因,目前官方已经出了故障报告,详见:https://status.openai.com/incidents/ctrsv3lwd797。在本文中,我将带大家深入了解OpenAI的此次故障事件,在别人的错误中得到经验教训。这次的事件过程的主要时间线如下:
- 2024年12月11日下午3:17 PST (太平洋标准时间),OpenAI的所有服务开始出现不可用现象。随着时间的推移,问题逐渐加重,导致客户在多个时段无法访问API、ChatGPT及Sora。
- 下午3:53 PST,工程师发现API调用返回错误,用户无法登录OpenAI平台,问题迅速扩展至多个服务。
- 随着时间的推移,OpenAI的工程团队最终确定了故障原因,并启动了应急响应。到了下午7:38 PST,所有服务才得以完全恢复。
从引发事故到最终恢复,时间超过了4个小时,对于ChatGPT和Sora这种全球性业务而言,影响可谓巨大。
CoreDNS是Kubernetes中负责服务发现和DNS解析的核心组件,它运行在控制平面内,用于为Pod提供DNS解析服务。在控制平面崩溃后,CoreDNS无法提供有效的DNS解析服务,导致Pod内部的服务无法通过DNS解析找到其他服务的地址。
这一问题最终引发了连锁反应,直接导致大量服务无法使用。
为了解决Kubernetes控制平面过载的问题,OpenAI的工程师团队采取了多种策略,包括:
- 缩小集群规模:通过减少Kubernetes API的负载,缓解了控制平面压力。
- 阻止访问Kubernetes管理API:避免了新的高负载请求,使得API服务器有时间恢复。
- 扩展Kubernetes API服务器的资源:增加了资源来处理待处理的请求,直到问题得以解决。
通过这些措施,OpenAI最终成功恢复了服务,并逐步将流量引导到健康的集群中。在这次事件中,可以看到即使是如 OpenAI这种万亿级别的企业,在核心基础设施上依然存在显著的短板。作为Kubernetes集群的核心组成部分,控制平面居然没有足够的冗余节点,听起来有点不可思议。