Невозможно загрузить новый образ с помощью AKS и ACR
У меня внезапно возникают проблемы с получением последнего образа из реестра контейнеров Azure с помощью AKS (который раньше работал нормально.
Если я убегу
kubectl describe pod <podid> I get:
Failed to pull image <image>: rpc error: code = Unknown desc = Error response from daemon: Get <image>: unauthorized: authentication required
Я пробовал войти в ACR вручную, и все работает правильно - новые изображения загружены правильно, и я могу вытащить их вручную.
Кроме того, я пробовал:
az aks update -g MyResourceGroup -n MyManagedCluster --attach-acr acrName
Что успешно (без ошибок, есть успешное распространение вывода), но все равно не работает.
Я пробовал обновить учетные данные с помощью:
az aks update-credentials --resource-group <group>--name <aks name>--reset-service-principal --service-principal <sp id> --client-secret <client-secret>
Из чего следует довольно странное сообщение:
Deployment failed. Correlation ID: 6e84754a-821d-4a39-a0df-7ab9ba21973f.
Unable to get log analytics workspace info. Resource ID:
/subscriptions/<subscription id>/resourcegroups/defaultresourcegroup-
weu/providers/microsoft.operationalinsights/workspaces/defaultworkspace-
d259e6ea-8230-4cb0-a7a8-7f0df6c7ef18-weu. Details: autorest/azure: Service
returned an error. Status=404 Code="ResourceGroupNotFound"
Message="Resource group 'defaultresourcegroup-weu' could not be found.". For
more details about how to create and use log analytics workspace, please
refer to: https://aka.ms/new-log-analytics
Я попытался создать новую рабочую область аналитики журнала, но ошибка, указанная выше, не исчезла.
Я также пробовал шаги из:
Помимо указанных выше сообщений, я просмотрел множество руководств и страниц Microsoft, чтобы попытаться решить проблему.
Я попытался создать нового субъекта-службы и назначить ему соответствующие роли, но ошибка все еще сохраняется. Я также пробовал создавать новые секреты, но безуспешно.
Все мои модули, которым не нужны новые изображения, работают должным образом. Если я посмотрю на свои регистрации приложений (в лазурном активном каталоге), все они были созданы год назад, поэтому я обеспокоен тем, что срок действия истек, и я не знаю, как это исправить.
2 ответа
Получил это, отключив надстройку Log Analytics, используя:
az aks disable-addons -a monitoring -n <AKSName> -g <ResourceGroupName>
Согласно одному из сообщений об ошибках, которые я опубликовал, похоже, что моя аналитика журнала просто заставляла все разваливаться (хотя не знаю, почему), поэтому на время отключил его и смог обновить кредиты с помощью
az aks update-credentials --resource-group <group>--name <aks name>--reset-service-principal --service-principal <sp id> --client-secret <client-secret>
Есть два способа отсортировать это
- Сопоставьте ACR с AKS
CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name
$AKS_CLUSTER_NAME --subscription $SUBSCRIPTION_ID --query "servicePrincipalProfile.clientId" --output tsv)
ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --query "id" --output tsv)
az role assignment create --assignee $CLIENT_ID --role Reader --scope $ACR_ID
Другой способ - добавить секрет извлечения изображения, который будет иметь тип kubernetes.io/dockerconfigjson
это можно сделать с помощью -
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
Затем вы можете указать этот секрет как imagePullSecret в файлах развертывания, и ошибки аутентификации там не должно быть.