You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS Fargate环境下Pod运行1小时后异常终止问题排查

核心判断结论

你认为「业务仅通过IRSA的IAM令牌和AWS服务交互,默认绑定服务账户令牌过期不会触发Pod异常」的判断不成立,两个核心逻辑你漏了:

  • EKS Fargate是托管节点,不需要你操作节点不代表节点组件不工作:Fargate侧的kubelet会持续用挂载到Pod里的投影服务账户令牌和API Server做心跳、状态同步,这个流程和你的业务代码完全无关。1小时是这类令牌的默认有效期,要是令牌刷新流程异常,kubelet没法完成Pod状态校验,会直接触发Pod重建,和你业务调不调K8s API没关系。
  • IRSA本身没有独立的令牌存储卷,它就是在默认投影的服务账户令牌里注入了IAM角色信任校验需要的字段,你拿IAM角色凭证的前提是这个K8s颁发的SA令牌本身有效,不存在两个完全独立的令牌。
1小时准点消亡的常见排查方向
  • 先查资源超限问题:Fargate的CPU、内存是硬配额,要是你给Pod配的内存刚好卡在长任务跑1小时左右的峰值,触发OOMKill之后,Pod本身会被快速删除,要是你没配置日志持久化,根本查不到Pod实例和历史日志。直接去CloudWatch对应日志组搜对应时间点的OOMKilled、Evicted事件就行,注意Fargate的Pod事件存在etcd里的时间很短,Pod删了之后过一会就查不到。
  • 查驱逐规则和容量池配置:
    • 如果你用的是Fargate Spot实例,1小时是Spot实例回收的常见提前通知周期,回收触发时Pod会被直接驱逐。
    • 排查集群有没有自定义kubelet驱逐参数,要是软驱逐的宽限期被设成了1小时,节点内存、磁盘占用到阈值之后就会卡着点驱逐Pod。
    • 检查集群自动伸缩器的缩容冷却配置,冷却时间过短的话,空节点会被快速回收,上面的Pod会被重新调度,看起来就像Pod自己消失了。
  • 查PAWS SDK的逻辑缺陷:R语言的PAWS早期版本没有实现IRSA凭证的自动刷新,只会在SDK初始化的时候读一次SA令牌,换1小时有效期的IAM临时凭证,之后不会重新读卷里更新的令牌内容。等1小时凭证到期,SDK调用AWS服务全失败,要是你代码里没捕获这类异常,R主进程会直接退出,容器主进程挂了Pod自然就没了。
  • 查服务账户挂载配置:要是你手动给Pod或者ServiceAccount设了automountServiceAccountToken: false但又开了IRSA,kubelet只会在Pod启动的时候临时挂一次令牌,后续不会更新卷里的令牌内容,1小时令牌过期后,不管是kubelet心跳还是SDK取凭证都会失败,Fargate控制面会直接标记Pod不健康触发删除。

快速验证方案:起一个和现有配置完全一致的Fargate Pod,入口命令设为sleep 5400(也就是1.5小时),不跑任何业务代码,观察是否会在1小时节点被删除:

  • 空Pod也准时删:问题出在Fargate平台侧、集群配置的令牌/驱逐逻辑
  • 空Pod能正常跑满1.5小时:问题出在业务代码、PAWS SDK的异常处理/凭证刷新逻辑

内容的提问来源于stack exchange,提问作者Anugerah Erlaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:36:25