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

EKS 1.28集群php-fpm Pod容器已启动却仍处于ContainerCreating状态求助

EKS 1.28中PHP-FPM Pod容器已启动但始终处于ContainerCreating状态的排查思路

核心现象

  • 运行版本1.28的EKS集群,PHP-FPM Pod出现异常:容器已完成拉取、创建、启动流程(Events中显示Started container api-test-php),且容器能生成日志,但Pod始终处于Pending状态,ContainersReady为False,容器状态显示ContainerCreating
  • 切换到Docker Hub的干净PHP镜像后,Pod能正常进入Running状态

可能的原因及排查方向

1. 自定义镜像的PHP-FPM启动方式问题

自定义ECR镜像可能修改了PHP-FPM的默认启动逻辑:

  • 若PHP-FPM以后台模式启动(未加-F参数),Kubelet会认为容器的主进程未持续运行,无法标记容器为就绪,导致状态卡在ContainerCreating
  • 对比干净镜像的启动命令,确认自定义镜像是否使用php-fpm -F(前台运行)来维持主进程的持续性

2. 镜像权限或SELinux上下文冲突

EKS节点默认可能启用SELinux,自定义镜像的文件权限、运行用户可能不符合节点安全策略:

  • 在节点执行journalctl -u kubelet | grep <Pod名称>,查看是否有权限相关报错(如文件访问被拒绝、SELinux上下文不匹配)
  • 尝试调整镜像内的文件权限(如RUN chmod -R 755 /usr/local/etc/php-fpm.d/),或切换为非root用户运行容器(若节点限制root容器)

3. CNI网络配置异常

Pod未分配IP(IP字段为空),可能是CNI插件(如Amazon VPC CNI)在分配网络时出现问题:

  • 查看节点上的CNI日志(路径通常为/var/log/aws-routed-eni/),搜索Pod相关记录,确认是否存在IP分配失败、路由配置异常
  • 检查自定义镜像是否修改了网络相关配置(如禁用IPv6、自定义路由表),导致CNI无法正常初始化容器网络

4. 镜像内初始化脚本阻塞

自定义镜像可能包含启动前的初始化脚本,脚本未正常退出或进入循环:

  • 执行kubectl logs <Pod名称>查看容器完整日志,确认初始化脚本是否有异常输出、是否正常结束
  • 对比干净镜像的启动流程,排查自定义镜像新增的初始化逻辑是否存在阻塞

5. 容器运行时兼容性问题

EKS 1.28默认使用containerd,自定义镜像若使用Docker特定特性(如BuildKit专属指令),可能导致containerd无法正确识别容器状态:

  • 检查镜像构建方式,尝试用传统Docker构建方式(禁用BuildKit)重新构建镜像后测试
  • 对比自定义镜像与干净镜像的镜像元数据(docker inspect <镜像ID>),排查是否有不兼容的配置项

快速验证步骤

  1. 强制PHP-FPM前台运行:在自定义镜像的Dockerfile中添加ENTRYPOINT ["php-fpm", "-F"],重新构建部署
  2. 查看节点kubelet日志,定位容器创建阶段的具体报错
  3. 逐步移除自定义镜像中的非必要配置,对比测试定位问题点

内容的提问来源于stack exchange,提问作者Diogo Alves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:53