GKE Workload部署失败:容器镜像构建错误排查求助
排查GKE部署时「Building the container image failed」错误的实用步骤
看起来你已经完成了镜像构建推送,却在GKE部署环节卡壳了——这个「Building the container image failed」提示有点误导人,实际大概率是镜像拉取失败或者配置问题,下面是一步步的排查方向:
1. 先核对镜像路径的正确性
GCP自动填充的gcr.io/some-gcp-project/github.com/githubuser/cso:$SHORT_SHA可能有问题:
- 你推送到GitHub Packages的镜像实际路径应该是
ghcr.io/githubuser/cso:$SHORT_SHA(GitHub Packages的镜像域名是ghcr.io而非gcr.io)。GCP的自动填充可能是尝试同步镜像到GCR但没成功,建议手动把Deployment YAML里的image字段替换成GitHub Packages的真实镜像地址再试。
2. 确认GitHub Packages的访问权限
GitHub Packages默认是私有仓库,GKE节点需要合法的凭证才能拉取:
- 生成一个GitHub Personal Access Token(PAT),勾选
read:packages权限; - 在GCP控制台给GKE集群配置镜像拉取密钥:把PAT作为密码,你的GitHub用户名作为用户名,创建一个Secret,然后在Deployment的
spec.template.spec.imagePullSecrets里引用这个Secret(比如添加imagePullSecrets: - name: github-packages-secret)。
3. 验证镜像和Tag确实存在
登录GitHub进入你的Packages页面,找到cso镜像,确认$SHORT_SHA对应的Tag已经成功推送上去。有时候推送过程中可能因为网络问题失败,或者Tag拼写错误,导致镜像实际不存在。
4. 查看GKE Pod的详细事件日志
部署失败后,进入GKE控制台的Workloads页面,找到这个cso Deployment,点击进入查看Pod的状态:
- 如果看到
ImagePullBackOff或ErrImagePull状态,点击Pod查看事件详情,里面会给出具体错误,比如「authentication required」(权限问题)、「manifest unknown」(镜像/Tag不存在),这些信息能直接定位问题。
5. 手动测试镜像拉取
用Cloud Shell或者本地机器(确保能访问GitHub),执行以下操作:
- 登录GitHub Packages:
echo "你的PAT" | docker login ghcr.io -u 你的GitHub用户名 --password-stdin - 尝试拉取镜像:
docker pull ghcr.io/githubuser/cso:$SHORT_SHA
如果拉取失败,说明问题出在GitHub Packages那边(比如镜像没推上去、PAT权限不够);如果能拉取,那问题大概率在GKE的配置(比如节点没权限访问GitHub、镜像拉取密钥没配置对)。
6. 检查GCP镜像同步配置(如果依赖自动同步)
如果你是想让GCP自动把GitHub Packages的镜像同步到GCR,需要确认同步任务是否成功:
- 去GCP的Artifact Registry查看同步日志,或者检查Cloud Build的任务记录,看有没有同步失败的提示(比如权限不足、镜像不存在)。
另外,你的HPA配置是没问题的,它的状态依赖Deployment的正常运行,所以先解决Deployment的镜像问题即可。
内容的提问来源于stack exchange,提问作者riser101
相关产品推荐
相关产品推荐

