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

Google Cloud Shell上Minikube无法从Artifact Registry拉取镜像:未认证请求

问题分析与解决方案

核心问题在于:GKE作为托管K8s集群,会自动为节点挂载具备Artifact Registry访问权限的服务账号凭据,但Minikube是运行在Cloud Shell内的独立单节点集群,其内部的Docker daemon并未自动继承Cloud Shell的GCP认证上下文。即使Cloud Shell本身有访问权限,Minikube容器内的环境是隔离的,无法直接复用这些权限。

可行解决方案

方案1:强制启用Minikube GCP Auth插件

虽然提示说GCE环境不需要,但因为Minikube的隔离性,需要强制开启插件来注入认证凭据:

minikube addons enable gcp-auth --force

启用后,Minikube会将当前Cloud Shell的GCP凭据同步到集群内,让kubelet能访问Artifact Registry。

方案2:创建ImagePullSecret并关联到Pod/ServiceAccount

如果方案1无效,可以手动创建用于Artifact Registry认证的镜像拉取密钥:

  1. 生成Docker配置文件(复用Cloud Shell的GCP认证):
gcloud auth configure-docker europe-docker.pkg.dev --quiet
  1. 从Docker配置创建K8s Secret:
kubectl create secret generic gcr-json-key \
  --from-file=.dockerconfigjson=$HOME/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson
  1. 在Deployment的YAML中添加imagePullSecrets字段:
spec:
  containers:
  - name: your-app
    image: europe-docker.pkg.dev/sample-dev-xxxxxx/github-cr/org-name/app:v0.0.46
  imagePullSecrets:
  - name: gcr-json-key

或者将该Secret关联到默认ServiceAccount,让所有Pod自动使用:

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'

方案3:直接在Minikube内部配置Docker认证

进入Minikube的容器环境,手动配置GCP认证:

minikube ssh
gcloud auth configure-docker europe-docker.pkg.dev --quiet
exit

这样Minikube内部的Docker daemon就能直接访问Artifact Registry了。

验证步骤

执行完上述方案后,重新部署应用:

kubectl apply -k k8/config/app/app-name

然后查看Pod状态,确认镜像拉取成功:

kubectl get pods

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:46:04