无法使用 AKS 和 ACR 拉取新映像
Unable to pull new image with AKS and ACR
我突然在使用 AKS(以前运行良好)从 Azure 容器注册表中提取最新映像时遇到问题。
如果我运行
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
我尝试创建一个新的日志分析工作区,但上面的错误仍然存在。
我还尝试了以下步骤:
This SO post
除了上面的帖子,我还浏览了许多教程和 Microsoft 页面来尝试解决问题。
我已经尝试创建一个新的服务主体并为其分配适当的角色,但错误仍然存在。
我也尝试过创造新的秘密,但没有成功。
我的 pods 不需要新图像,都符合预期 运行ning。
如果我查看我的应用程序注册(在 Azure 活动目录下),它们都是一年前创建的 - 所以我担心有些东西已经过期,我不知道如何修复它。
有两种方法可以排序
- 将 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
另一种方法是添加 Image pull secret,类型为 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>
那么你可以在部署文件中将这个secret引用为imagePullSecret,这样就不会出现鉴权错误了
通过使用以下命令禁用 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>
我突然在使用 AKS(以前运行良好)从 Azure 容器注册表中提取最新映像时遇到问题。
如果我运行
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
我尝试创建一个新的日志分析工作区,但上面的错误仍然存在。
我还尝试了以下步骤:
This SO post
除了上面的帖子,我还浏览了许多教程和 Microsoft 页面来尝试解决问题。
我已经尝试创建一个新的服务主体并为其分配适当的角色,但错误仍然存在。 我也尝试过创造新的秘密,但没有成功。
我的 pods 不需要新图像,都符合预期 运行ning。 如果我查看我的应用程序注册(在 Azure 活动目录下),它们都是一年前创建的 - 所以我担心有些东西已经过期,我不知道如何修复它。
有两种方法可以排序
- 将 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
另一种方法是添加 Image pull secret,类型为 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>
那么你可以在部署文件中将这个secret引用为imagePullSecret,这样就不会出现鉴权错误了
通过使用以下命令禁用 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>