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

GKE部署中使用Google服务账号拉取镜像失败问题排查

解决GKE部署StatefulSet时服务账号找不到及权限不足问题

问题根源

你混淆了GCP服务账号和Kubernetes服务账号:前者是GCP生态的身份实体,后者是K8s集群内的身份实体。部署StatefulSet时引用的是K8s服务账号,所以会提示找不到;同时你当前操作K8s集群的账号没有创建K8s服务账号的权限,导致创建失败。

分步解决方案

1. 确保操作K8s的账号有足够权限

使用拥有集群管理权限的账号(比如GCP项目的Owner/Editor,或绑定了roles/container.admin角色的账号)执行后续操作。如果当前账号权限不足,可通过GCP IAM为其添加roles/container.developer(最小权限)或roles/container.admin权限,或者切换到集群管理员账号。

2. 创建K8s服务账号(default命名空间)

创建名为artifact-reader的K8s服务账号,保存为sa.yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: artifact-reader
  namespace: default

执行命令创建:

kubectl apply -f sa.yaml

3. 关联GCP服务账号与K8s服务账号(使用Workload Identity)

这是GKE推荐的安全方式,让K8s服务账号能继承GCP服务账号的权限:

  • 首先确认集群已启用Workload Identity(若未启用,可通过gcloud container clusters update <CLUSTER_NAME> --zone <ZONE> --workload-pool=<PROJECT_ID>.svc.id.goog开启)
  • 给GCP服务账号授予被K8s服务账号 impersonate 的权限:
gcloud iam service-accounts add-iam-policy-binding \
  artifact-reader@<你的GCP项目ID>.iam.gserviceaccount.com \
  --member="serviceAccount:<你的GCP项目ID>.svc.id.goog[default/artifact-reader]" \
  --role="roles/iam.workloadIdentityUser"
  • 给K8s服务账号添加注解,关联到GCP服务账号:
kubectl annotate serviceaccount artifact-reader \
  iam.gke.io/gcp-service-account=artifact-reader@<你的GCP项目ID>.iam.gserviceaccount.com \
  -n default

4. 在StatefulSet配置中指定K8s服务账号

修改StatefulSet的YAML,在spec.template.spec下添加serviceAccountName字段:

spec:
  template:
    spec:
      serviceAccountName: artifact-reader
      containers:
      - name: 你的容器名称
        image: us-central1-docker.pkg.dev/<你的GCP项目ID>/<镜像仓库名>/<镜像名>:标签

重新部署StatefulSet即可。

权限优化(可选)

你之前给GCP服务账号绑定了roles/editor权限过于宽泛,建议缩小为仅能拉取Artifact Registry镜像的权限:
用Terraform修改GCP IAM绑定:

resource "google_project_iam_member" "artifact_reader_role" {
  project = var.project_id
  role    = "roles/artifactregistry.reader"
  member  = "serviceAccount:${google_service_account.artifact_reader.email}"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:20