Не удалось получить изображение - неавторизовано: требуется аутентификация (ImagePullBackOff)

Мой конвейер выпуска работает успешно и создает контейнер в Azure Kubernetes, однако, когда я просматриваю экран Azure Portal> Kubernetes service> Insights, он показывает сбой.

Не удается извлечь изображение из моего личного репозитория контейнеров с сообщением об ошибке ImagePullBackOff.

Я выполнил описание kubectl на модуле и получил сообщение об ошибке ниже:

Не удалось получить изображение "myexampleacr.azurecr.io/myacr:13": [ошибка rpc: code = Unknown desc = Ошибка, ответ от демона: Get https://myexampleacr.azurecr.io/v2/myacr/manifest/53: unauthorized: требуется аутентификация.

Ниже приводится краткая справка о моей настройке: я использую секрет Kubernetes для доступа к контейнерам в частном реестре контейнеров.

Я сгенерировал секрет Kubernetes, используя clientId и пароль (секрет) из принципа обслуживания, созданного моей командой DevOps. . Команда, используемая для генерации секрета кубернетов:

kubectl создать секретный docker-registry acr-auth --docker-server --docker-username --docker-password --docker-email

Затем я обновил свой deployment.yaml с помощью imagePullSecrets: name: acr-auth

После этого я запустил свой конвейер развертывания и выпуска, оба работали успешно, но они показывают сбой в службе kubernetes с сообщением об ошибке ImagePullBackOff.

Любая помощь будет высоко ценится.


person jack    schedule 12.08.2019    source источник
comment
вы указали имя пользователя \ пароль? потому что показанная вами команда этого не подразумевает? Кроме того, вам действительно следует использовать внутреннюю аутентификацию AKS для ACR (при условии, что вы ее используете)   -  person 4c74356b41    schedule 13.08.2019


Ответы (3)


Как показывает ошибка, требуется аутентификация. Как я вижу из вашего описания, возможная причина заключается в том, что ваша группа не назначает роль ACR принципалу службы, создаваемому вашей командой, или вы используете неправильный принципал службы. Итак, вам нужно проверить две вещи:

  1. Если у используемого вами субъекта-службы есть правильное разрешение ACR.
  2. Если секрет Kubernetes был создан прямо в сервисе Kubernetes.

Способ проверить, имеет ли субъект-службу правильное разрешение ACR, состоит в том, что извлекает изображение в ACR после входа в систему с субъектом-службой на сервере докеров. Кроме того, как сказано в комментарии, вам нужно убедиться, что команда верна, как показано ниже:

kubectl create secret docker-registry acr-auth --docker-server myexampleacr.azurecr.io --docker-username clientId --docker-password password --docker-email yourEmail

Кроме того, существует небольшая вероятность того, что вы используете неправильное изображение с тегом. Кстати, зацените.

person Charles Xu    schedule 14.08.2019
comment
Проблема заключалась в том, что принцип обслуживания не имел разрешений ACRPull, после того как наша команда DevOps назначила его, развертывание в кластере kubernetes сработало. Чтобы уточнить, я уже установил секрет kubernetes и включил в свой файл yaml развертывания, acrpull по принципу обслуживания был недостающей частью. - person jack; 15.08.2019
comment
обратите внимание, что если ваш пароль содержит $, вы должны экранировать его, используя \ $ - person samasoulé; 24.02.2021

Это странно, может быть, там показано старое развертывание, которое вы не удаляли. Также могут быть эти; неверные реквизиты, возможно, acr не работает, имя или тег изображения неверны. Вы также можете использовать собственную аутентификацию aks-acr и никогда не использовать секреты: https://docs.microsoft.com/en-gb/azure/container-registry/container-registry-auth-aks

person Akin Ozer    schedule 12.08.2019

В моем случае проблема заключалась в том, что у моего --docker-password был специальный символ, и я не избегал его с помощью кавычек (т.е. --docker-password 'myPwd $')

Вы можете проверить правильный пароль, выполнив эту команду: kubectl get secret ‹СЕКРЕТ› -n ‹NAMESPACE› --output = jsonpath = {. Data..dockerconfigjson} | base64 --decode

Ссылка: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

person famen    schedule 29.01.2021