#jenkins #azure-aks #acr
Вопрос:
При извлечении пользовательского изображения service-jenkins из ACR AKS выдает следующую ошибку:
Ошибка предупреждения 0 с (x2 более 31 с) кублету не удалось извлечь изображение «XXX.azurecr.io/service-jenkins:latest»: [ошибка rpc: код = Неизвестно описание = не удалось извлечь и распаковать изображение «XXX.azurecr.io/service-jenkins:latest»: не удалось извлечь слой sha256:XXX: неожиданный EOF: неизвестно, ошибка rpc: код = Неизвестно desc = не удалось извлечь и распаковать изображение «XXX.azurecr.io/service-jenkins:latest»: не удалось разрешить ссылку «XXX.azurecr.io/service-jenkins:latest»: не удалось авторизоваться: не удалось получить анонимный токен: неожиданный статус: 401 Несанкционированный]
Мы предприняли следующие шаги в попытке решить эту проблему:
- Подключил AKS с ACR с помощью SP вместо использования секрета, хранящегося в том же пространстве имен
- Загрузил образец изображения приветственного мира, которое успешно извлекается AKS
- Проверил, что секрет изображения совпадает с ключами ACR
Мы извлекли и выполнили образ service-jenkins с помощью локального механизма докеров, чтобы проверить, нет ли каких-либо проблем с созданием образа, но контейнер выполняется нормально.
Мы не можем точно определить проблему. Любая помощь будет признательна!
Ответ №1:
Если в вашей ошибке есть формулировка «анонимный токен доступа«, выполните команду ниже в облачной оболочке azure
выполните следующие действия:-
- Перейдите на портал azure
- Войдите в кластер aks с помощью cloudshell
- Выполните команду ниже :
обновление az acr-анонимное-с возможностью извлечения
Ответ №2:
Как вы связали AKS с ACR?
Вы можете сделать это с помощью Azure CLI (подробности здесь) или самостоятельно создав назначение ролей (подробности здесь).
Для последнего вам придется назначить acrpull
Роль Управляемому удостоверению (или Участнику службы) пула узлов AKS.
Ответ №3:
Оказывается, эта конкретная проблема возникает, когда
- Версия AKS K8 > 1.18.xx
- Используется базовый образ докера Ubuntu 20.10
При глубоком погружении в проблему кажется, что Ubuntu 20.10 имеет некоторое дублирование слоев, которое плохо сочетается с реализацией MSFT среды выполнения K8 containerd.
Я не эксперт, но это единственное отличие, которое я заметил в Azure, так как мы также пробовали те же развертывания с IBM Cloud, и это, похоже, работает в соответствии с ожиданиями.
Простое обновление базы Ubuntu до 21.04 устранило проблему для меня 🙂