GitLab CI/CD部署容器到GKE Kubernetes集群失败如何排查
问题原因及排查方案
常见触发原因
- 集群与环境绑定不匹配:GitLab全量集成集群后,需要手动确认
production环境已和对应GKE集群关联,若环境未绑定集群,CI作业无法获取集群访问凭证,就会触发资源创建失败报错 - 凭证注入受限:如果集群集成时开启了「仅向受保护分支/标签提供访问凭证」选项,而你运行CI作业的分支不属于受保护范围,作业就拿不到KUBECONFIG配置,kubectl命令无法连接集群
- 命名空间配置异常:你在CI配置里指定了
test1命名空间,若该命名空间未在GKE集群中提前创建,或者集群集成时绑定的默认命名空间覆盖了CI配置的命名空间,也会导致执行失败 - 集群访问限制:如果你的GKE集群是私有集群,GitLab Runner的出口IP未加入GKE控制平面的白名单,会出现网络连通失败的问题
- kubectl版本兼容问题:
bitnami/kubectl:latest对应的版本如果和你的GKE集群版本差异超过1个小版本,可能出现API兼容问题,导致命令执行失败
排查步骤
- 先进入项目「设置」-「CI/CD」-「Kubernetes」页,确认绑定的GKE集群开启了CI变量注入,且环境可用范围包含
production - 在本地用有权限的kubeconfig执行
kubectl get ns test1,确认命名空间存在 - 临时修改
deploy-prod作业的script配置,增加调试日志:
重新运行CI作业,查看作业日志即可定位具体故障点deploy-prod: stage: deploy image: bitnami/kubectl:latest script: - echo $KUBECONFIG # 验证凭证变量是否注入 - kubectl config view # 查看实际加载的集群配置 - kubectl get pods -v=6 # 带详细日志执行命令,定位具体报错 environment: name: production kubernetes: namespace: test1
内容的提问来源于stack exchange,提问作者Alex116
相关产品推荐
相关产品推荐

