You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AKS部署容器化服务时遭遇镜像拉取失败问题求助

解决AKS拉取ACR镜像失败的方案
  • 确认镜像存在且标签正确
    登录Azure CLI,检查目标镜像是否存在于ACR中:

    az acr repository show --name debugdemoimage --repository new-service --tag latest
    

    若命令返回错误,说明镜像未推送至ACR或标签有误,重新推送正确镜像即可。

  • 验证服务主体的ACR权限
    检查用于拉取镜像的服务主体是否拥有AcrPull角色权限:

    az role assignment list --assignee <服务主体ID> --scope /subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.ContainerRegistry/registries/debugdemoimage
    

    若输出中无AcrPull角色记录,执行以下命令添加权限:

    az role assignment create --assignee <服务主体ID> --scope /subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.ContainerRegistry/registries/debugdemoimage --role AcrPull
    
  • 配置Pod的镜像拉取密钥
    你的Deployment YAML未指定镜像拉取密钥,需确认AKS集群是否已通过服务主体自动关联ACR,若未关联,手动创建并引用:

    1. 创建存储ACR凭据的Kubernetes Secret:
      kubectl create secret docker-registry acr-secret --docker-server=debugdemoimage.azurecr.io --docker-username=<服务主体应用ID> --docker-password=<服务主体密码> --docker-email=any@example.com
      
    2. 修改Deployment YAML,在spec.template.spec下添加密钥引用:
      spec:
        containers:
        - name: new-service
          image: debugdemoimage.azurecr.io/new-service:latest
          ports:
          - containerPort: 80
          imagePullPolicy: Always
        imagePullSecrets:
        - name: acr-secret
      
  • 检查AKS节点与ACR的网络连通性
    若AKS与ACR不在同一VNet且未配置专用链接,确认节点能访问ACR公共端点:
    先进入AKS节点(需通过SSH或kubectl exec到节点),执行:

    curl -v https://debugdemoimage.azurecr.io/v2/
    

    若连接失败,检查NSG规则、防火墙是否允许443端口访问ACR的IP范围。

  • 查看Pod事件获取详细错误
    执行命令查看Pod的事件日志,获取拉取失败的具体原因(如权限拒绝、镜像不存在、网络超时等):

    kubectl describe pod new-service-deployment-6cc77c6b5-4mdxw
    

内容的提问来源于stack exchange,提问作者Abaiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:43:17