You need to enable JavaScript to run this app. 从Azure容器注册表拉取镜像至Kubernetes集群仅特定节点拉取成功的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

从Azure容器注册表拉取镜像至Kubernetes集群仅特定节点拉取成功的问题咨询

问题根源与缺失配置说明

核心根源

同一Pod仅修改nodeName参数时拉取镜像结果不一致,说明Pod本身的部署配置没有问题,差异完全来自两个节点池的节点环境:要么是自定义aks-cpu1节点池的节点没有ACR拉取的认证权限,要么是节点到ACR的网络链路不通。

常见缺失配置场景

1. 拉取密钥配置未生效,自定义节点池无ACR访问权限

你已完成docker-registry类型拉取密钥的创建,但如果没有完成以下任意一步配置,这个密钥实际不会在镜像拉取流程中生效:

  • 未在Pod的YAML中显式添加imagePullSecrets字段关联你创建的密钥
  • 未将密钥绑定到Pod所属命名空间的默认ServiceAccount(如果Pod未显式配置imagePullSecrets,会自动使用ServiceAccount关联的拉取密钥)

这种情况下默认agentpool能拉取镜像,实际是依赖AKS默认节点池的托管身份被提前授予了ACR的AcrPull角色权限,而自定义aks-cpu1节点池的托管身份没有配置对应权限,因此拉取失败。

对应补全配置二选一即可:

  • 在Pod YAML中补全imagePullSecrets配置,直接关联你创建的拉取密钥,所有节点池都会共用这个SP认证拉取镜像:
    spec:
      imagePullSecrets:
      - name: <你创建的secret-name>
      containers:
      - ...
    
  • 给自定义aks-cpu1节点池的Kubelet托管身份授予ACR的AcrPull角色权限。

2. 自定义节点池到ACR的网络链路不通

如果已经确认imagePullSecrets已经正确配置,问题大概率出在网络层:

  • 你的ACR开启了防火墙或私有终结点白名单,仅放行了默认agentpool所在子网、出站IP段的访问权限,aks-cpu1节点池的源IP/子网没有被加入白名单
  • 如果ACR配置了私有DNS解析,aks-cpu1节点池所在子网没有关联ACR对应的私有DNS区域,导致无法正确解析ACR的访问地址

对应补全配置:

  • 将aks-cpu1节点池的子网、出站IP段加入ACR的访问白名单
  • 把ACR对应的私有DNS区域关联到aks-cpu1节点池所在的VNet,保证节点能正确解析ACR域名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 20:36:09