可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm following Kubernete's getting started guide. Everything went smoothly until I ran
$ gcloud docker push gcr.io/<PROJECT ID>/hello-node:v1
(Where is, well, my project id). For some reason, Kubernetes is not able to push to the registry. This is what I get:
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
Warning: '--email' is deprecated, it will be removed soon. See usage.
Login Succeeded
The push refers to a repository [gcr.io/kubernetes-poc-1320/hello-node]
18465c0e312f: Preparing
5f70bf18a086: Preparing
9f7afc4ce40e: Preparing
828b3885b7b1: Preparing
5dce5ebb917f: Preparing
8befcf623ce4: Waiting
3d5a262d6929: Waiting
6eb35183d3b8: Waiting
denied: Unable to create the repository, please check that you have access to do so.
Any ideas on what I might be doing wrong? Note that I have run. $ gcloud init
, so I've logged in.
Thanks in advance!
回答1:
This solved it in my case:
Short version:
Press Enable billing
in the Container Engine
screen in the https://console.cloud.google.com
.
Long version:
In my case I got the error because of an issue with setting billing in the google cloud platform console.
Although I entered all my credit card information and the screen of my Container Engine
Screen in the google cloud platform console said Container Engine is getting ready. This may take a minute or more.
, it didn't work before I pressed Enable billing
on the same screen. Then the gcloud docker push
command finally worked.
Oddly enough after later returning to the Container Engine
screen, it shows me Container Engine is getting ready. This may take a minute or more.
and the button Enable billing
again.. must be a bug in the console.
回答2:
None of the above solutions worked for me and I finally found out a solution. I'm using Windows 10 and looked at my C:/Users//.docker/config.json file and it looked like this.
{
"auths": {
"https://appengine.gcr.io": {},
"https://asia.gcr.io": {},
"https://b.gcr.io": {},
"https://bucket.gcr.io": {},
"https://eu.gcr.io": {},
"https://gcr.io": {},
"https://gcr.kubernetes.io": {},
"https://us.gcr.io": {}
},
"credsStore": "wincred"
}
Removing the "credsStore": "wincred" line fixed the problem!
回答3:
If you're using a GCE instance, you need to make sure it has the right Cloud API access scope.
Since you can't edit the scopes on running instances, you can create a new instance using your current disk.
To do that, do the following
- Go to your instance page and click Edit
- Uncheck Delete boot disk when instance is deleted and click save
- Create a new instance using your previous disk and with write permissions on Storage.
回答4:
I was getting this same error because I was accidentally using the project name rather than the auto-generated id. The PROJECT_ID
can be found via:
$ gcloud info
as well as in the Google Cloud dashboard: https://console.cloud.google.com/home/dashboard
Silly, I realize, but I can imagine others making the same mistake :)
回答5:
Ensure you are authenticated with Google Cloud.
$ gcloud auth application-default login
Double-check gcloud
is pointing to your current project.
$ gcloud config set project PROJECT_ID
If you still have trouble, run gcloud info
and take a look at the Last Log File
. Note: gcloud auth login
no longer writes application default credentials.
回答6:
In https://stackoverflow.com/a/39996807/598513 I answered switching user/account
gcloud auth list
gcloud config set account example@gmail.com
回答7:
Edit: This worked for me months ago. New versions of Kubernetes might not have this problem, or this solution might not solve it :)
Ok, after struggling for hours with this, I finally managed to push it to th grc.io registry by changing my tag from a image:version
notation to image/version
, like this:
gcloud docker push gcr.io/<PROJECT ID>/hello-node/v1
after reading another guide from Kubernetes' documentation: https://cloud.google.com/container-registry/docs/pushing#pushing_to_the_registry
Hope this helps!
回答8:
For me, having the same error, I found I missed the "gcloud" in the beginning. That was because previous 2 commands started with docker and I just glanced over the changes after docker.
~/gs-spring-boot/complete$ docker -- push gcr.io/kubernetes-codelab-1xxxxx/hello-java:v1
correct:
~/gs-spring-boot/complete$ gcloud docker -- push gcr.io/kubernetes-codelab-1xxxxx/hello-java:v1
回答9:
run gcloud init
and see whether you have logged in to the correct account. I once had this error because of i was trying to push image from different google account
回答10:
When using docker-credential-helpers to store docker credentials in the OSX Keychain, gcloud docker -- push $registry/$project_id/<image>:<tag>
fails as well.
Solution for me was to revert ~/.docker/config.json
to not store credentials securely with the keychain
See also: https://github.com/GoogleCloudPlatform/gcloud-common/issues/198
回答11:
What do you use as a project id? It shouldn't be "my-kubernetes-codelab", it should be "my-kubernetes-codelab-234231" or whatever your numbered version is. This was my problem.