本地K3S集群通过Workload Identity Federation拉取GAR镜像失败求助
排查本地K3S集群对接GAR拉取镜像失败的缺失配置
1. 检查容器运行时的镜像拉取配置
K3S默认使用containerd,需确认其针对GAR仓库的认证配置是否正确:
- 查看
/var/lib/rancher/k3s/agent/etc/containerd/config.toml,确保us-west-docker.pkg.dev仓库已配置正确的auth插件,关联Workload Identity的令牌获取逻辑 - 重启相关服务使配置生效:
systemctl restart k3s-agent containerd
2. 验证Workload Identity令牌的受众匹配
- 检查获取到的令牌的
aud字段是否为https://us-west-docker.pkg.dev,GAR要求令牌受众必须与仓库域名完全匹配 - 可通过
gcloud auth print-identity-token --audiences=https://us-west-docker.pkg.dev生成测试令牌,对比本地集群获取的令牌内容,确认受众一致
3. 确认Workload Identity绑定关系有效性
- 检查K8S服务账号与GCP服务账号的绑定规则:确保命名空间、服务账号名称完全匹配,绑定关系已正确创建
- 执行
gcloud iam workload-identity-pools providers describe <provider-name> --location=global --workload-identity-pool=<pool-name>,验证绑定的K8S资源信息无误
4. 排查集群网络访问权限
- 在K3S节点上执行
curl -v https://us-west-docker.pkg.dev/v2/和curl -v https://oauth2.googleapis.com,确认节点可正常访问GAR和GCP令牌服务 - 若集群有防火墙或代理,需确保允许上述域名的HTTPS流量通过,且代理配置已同步应用到containerd和k3s进程
5. 核对Pod的服务账号配置
- 确认Pod的
serviceAccountName已设置为关联Workload Identity的K8S服务账号,且该服务账号的注解(如iam.gke.io/gcp-service-account)正确指向拥有GAR Reader权限的GCP服务账号 - 检查Pod是否配置了无关的
imagePullSecrets,该配置会覆盖Workload Identity的认证流程,需移除
内容的提问来源于stack exchange,提问作者deals my
相关产品推荐
相关产品推荐

