Kubernetes Engine не может получить изображение из не частного / GCR-репозитория - PullRequest
0 голосов
/ 27 апреля 2018

Я какое-то время радостно развертывался на Kubernetes Engine, но, работая над интегрированным конвейером построения облачных контейнеров, у меня начались проблемы.

Я не знаю, что изменилось. Я больше не могу развертываться в kubernetes, даже способами, которые я делал раньше без Cloud Builder.

Процесс развертывания pods выдает ошибку, указывающую, что он не может извлечь из реестра. Это кажется странным, потому что изображения существуют (я могу получить их, используя cli), и я предоставил все возможные связанные разрешения моему пользователю и учетной записи службы облачного построителя.

Я получаю ошибку ImagePullBackOff и вижу это в событиях pod:

Не удалось вытащить изображение "Gcr.io/my-project/backend:f4711979-eaab-4de1-afd8-d2e37eaeb988": Ошибка RPC: код = Неизвестный desc = неавторизованный: требуется аутентификация

Что происходит? Кому и для чего нужна авторизация?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

В моем случае у моего кластера не было разрешения на чтение из хранилища, которое необходимо для GKE, чтобы получить изображение из GCR.

У моего кластера не было необходимых разрешений, потому что я создал кластер с помощью terraform и не включил блок node_config.oauth_scopes. При создании кластера через консоль разрешение на чтение из хранилища добавляется по умолчанию.

0 голосов
/ 04 мая 2018

Учетные данные в моем проекте как-то запутались. Я решил проблему, заново инициализировав несколько API, включая Kubernetes Engine, Deployment Manager и Container Builder.

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

Я узнал, что с помощью gcloud CLI вы можете перечислить все API вашего проекта и правильно отключить все.

После этого все заработало.

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

Вот несколько примеров полезных команд:

gcloud projects get-iam-policy $PROJECT_ID

gcloud services disable container.googleapis.com --verbosity=debug

gcloud services enable container.googleapis.com

Подробнее здесь , включая способ восстановления учетных данных учетной записи службы.

...