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

EKS中Pod存活探针无报错却频繁重启问题排查求助

排查EKS Pod容器存活探针失败重启问题

一、直接验证探针执行结果

  • 进入问题容器手动执行健康检查脚本/命令,确认执行状态与输出:
    kubectl exec -it <pod名称> -c <问题容器名> -- /path/to/grpc-health-check-script
    
    执行后通过echo $?查看返回码,非0值说明脚本本身存在执行失败问题。
  • 查看容器日志获取探针执行细节:
    kubectl logs <pod名称> -c <问题容器名> --previous  # 查看重启前的日志
    kubectl logs <pod名称> -c <问题容器名>
    
    探针的错误输出通常会写入容器日志,可补充事件中缺失的失败原因。

二、检查探针配置参数合理性

  • 确认存活探针的时间参数:
    • initialDelaySeconds:若容器启动较慢,该值过小会导致启动初期探针误判
    • timeoutSeconds:若健康检查脚本执行耗时较长,该值过小会被判定为超时失败
    • failureThreshold:若设为1,单次探针失败就会触发重启,需确认是否为偶发超时导致
  • 核对Deployment中的探针配置示例:
    livenessProbe:
      exec:
        command: ["sh", "/scripts/grpc-health-check.sh"]
      initialDelaySeconds: 30
      periodSeconds: 300
      timeoutSeconds: 5
      failureThreshold: 1
    

三、排查gRPC健康检查脚本问题

  • 验证脚本依赖工具:在容器内执行which grpcurl,确认工具已正确安装且版本与服务兼容
  • 检查脚本内配置:确认目标地址、端口、服务名是否正确,避免因localhost网络异常、服务名拼写错误导致检查失败
  • 确认脚本权限:执行ls -l /path/to/grpc-health-check-script,若无执行权限,需在Dockerfile中添加chmod +x /path/to/grpc-health-check-script步骤

四、检查容器资源与状态

  • 查看容器资源使用情况,确认是否因达到resources.limits导致探针执行时资源不足:
    kubectl top pod <pod名称> -c <问题容器名>
    
  • 查看Pod完整事件,排查关联异常:
    kubectl describe pod <pod名称>
    
    重点关注节点资源不足、容器网络不通等关联事件。

五、验证Docker镜像构建问题

  • 检查Dockerfile:确认已安装健康检查依赖工具、设置脚本可执行权限、配置必要环境变量
  • 本地测试镜像:拉取镜像后手动运行,验证健康检查脚本是否正常执行:
    docker run --rm <镜像名> /path/to/grpc-health-check-script
    

六、集群层面排查

  • 查看kubelet日志获取探针执行详情:
    kubectl logs -n kube-system <kubelet-pod名称> -c kubelet | grep <pod名称>
    
    kubelet日志会记录探针执行的具体错误(如命令找不到、执行超时等),kubelet Pod通常在kube-system命名空间,命名格式类似ip-xxx-xxx-xxx-xxx.ec2.internal
  • 检查节点网络策略:确认未阻断容器内部gRPC健康检查请求(如localhost端口未被防火墙拦截)

内容的提问来源于stack exchange,提问作者Raghav Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:20:41