Kubernetes: невозможно создать репозиторий

Я руководство по началу работы Kubernete. Все шло гладко, пока я не побежал!--6-->

$ gcloud docker push gcr.io/<PROJECT ID>/hello-node:v1

(где, ну, мой идентификатор проекта). По какой-то причине Kubernetes не может нажать на реестр. Вот что я получаю:

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.

есть идеи о том, что я могу делать неправильно? Обратите внимание, что я побежал. $ gcloud init, Так что я вошел в систему.

спасибо заранее!

11 ответов


это решило его в моем случае:


короткая версия:

пресс Enable billing на Container Engine экран https://console.cloud.google.com.


версия:

в моем случае я получил ошибку из-за проблемы с настройкой биллинга в консоли Google cloud platform.

хотя я ввел всю информацию о своей кредитной карте и экран моего Container Engine экран в облачной платформе google консоль сказала Container Engine is getting ready. This may take a minute or more., это не сработало, прежде чем я нажал Enable billing на одном экране. Тогда gcloud docker push команда наконец-то сработала.

как ни странно, позже вернувшись в Container Engine экран, он показывает мне Container Engine is getting ready. This may take a minute or more. и кнопку Enable billing снова.. должна быть ошибка в консоли.


ни одно из вышеперечисленных решений не сработало для меня, и я, наконец, нашел решение. Я использую Windows 10 и посмотрел на мой C:/Users//.docker / config.файл json, и он выглядел так.

{
    "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"
}

удаление "credsStore":"wincred" line Исправлена проблема!


Если вы используете экземпляр GCE, вам нужно убедиться, что он имеет правильную область доступа к облачному API. Поскольку вы не можете редактировать области на запущенных экземплярах, вы можете создать новый экземпляр с помощью текущего диска.

чтобы сделать это, сделайте следующее

  • перейдите на страницу экземпляра и нажмите редактировать
  • убрать удалить загрузочный диск при удалении экземпляра и нажмите кнопку сохранить
  • создать новый экземпляр использование предыдущего диска и разрешения на запись в хранилище.

Я получал эту же ошибку, потому что я случайно использовал проект имя, а не автоматически сгенерированные id. The PROJECT_ID можно найти через:

$ gcloud info

а также в Google Cloud dashboard:https://console.cloud.google.com/home/dashboard

глупо, я понимаю, но я могу представить, что другие делают ту же ошибку:)


убедитесь, что вы прошли проверку подлинности с Google Cloud.

$ gcloud auth application-default login

проверьте gcloud указывает на ваш текущий проект.

$ gcloud config set project PROJECT_ID

если у вас все еще есть проблемы, бегите gcloud info и посмотрите на Last Log File. Примечание:gcloud auth login больше не записывает учетные данные приложения по умолчанию.


на https://stackoverflow.com/a/39996807/598513 я ответил переключение пользователей/счета

gcloud auth list
gcloud config set account example@gmail.com

Edit: это сработало для меня несколько месяцев назад. Новые версии Kubernetes могут не иметь этой проблемы, или это решение может не решить ее:)

хорошо, после нескольких часов борьбы с этим, мне, наконец, удалось подтолкнуть его к grc.реестр ввода-вывода, изменив мой тег с image:version написать image/version, например:

gcloud docker push gcr.io/<PROJECT ID>/hello-node/v1

после прочтения другого руководства из документации Kubernetes: https://cloud.google.com/container-registry/docs/pushing#pushing_to_the_registry

надеюсь, что это помогает!


для меня, имея ту же ошибку, я обнаружил, что пропустил "gcloud" в начале. Это было потому, что предыдущие 2 команды начались с docker, и я просто просмотрел изменения после docker.

~/gs-spring-boot/complete$ docker -- push gcr.io/kubernetes-codelab-1xxxxx/hello-java:v1

правильно:

~/gs-spring-boot/complete$ gcloud docker -- push gcr.io/kubernetes-codelab-1xxxxx/hello-java:v1

run gcloud init и посмотреть, вошли ли вы в правильную учетную запись. У меня когда-то была эта ошибка из-за того, что я пытался нажать изображение из другой учетной записи google


при использовании docker-учетные данные-помощники для хранения учетных данных docker в связке ключей OSX,gcloud docker -- push $registry/$project_id/<image>:<tag> невозможна.

решение для меня, чтобы вернуться ~/.docker/config.json чтобы не хранить учетные данные надежно с брелка

см. также:https://github.com/GoogleCloudPlatform/gcloud-common/issues/198


Что вы используете в качестве идентификатора проекта? Это не должно быть "мое-kubernetes-codelab", должно быть "мое-kubernetes-codelab-234231", или как там нумеруются версии. Это была моя проблема.