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

AKS无法拉取GitHub私有仓库镜像但Minikube可正常拉取的问题排查求助

排查AKS拉取GitHub私有镜像失败的问题

咱们一步步来梳理这个问题的排查方向,结合你描述的场景——Minikube和本地Docker都能正常拉取镜像,但AKS不行,大概率是AKS集群的网络配置、镜像拉取Secret细节或者节点权限的问题。以下是具体的排查步骤:

1. 确认AKS集群能连通GitHub Packages的API

首先要排除网络连通性的问题,毕竟镜像拉取失败的报错是“content not found”,但也可能是节点根本连不上GitHub的镜像仓库:

  • 创建一个调试Pod来测试网络:
    kubectl run -it --rm debug-pod --image=curlimages/curl
    
  • 在调试Pod里执行curl命令,访问镜像的manifest地址(替换成你实际的仓库和镜像名):
    curl -v https://docker.pkg.github.com/v2/你的GitHub用户名/仓库名/镜像名/manifests/latest
    
    如果返回连接超时/拒绝,说明AKS节点的网络被限制了,需要检查子网的NSG出站规则;如果返回401 Unauthorized,说明凭证有问题;如果返回404 Not Found,那要确认镜像确实存在且tag正确。

2. 验证镜像拉取Secret的正确性

虽然你本地Docker login没问题,但AKS上的Secret可能存在配置细节错误:

  • 先删除现有Secret(如果已经创建):
    kubectl delete secret regcred
    
  • 重新创建Secret,注意这里必须用**GitHub Personal Access Token(PAT)**作为密码(尤其是开启了2FA的账号,不能用登录密码),并且PAT需要有read:packages权限:
    kubectl create secret docker-registry regcred \
      --docker-server=docker.pkg.github.com \
      --docker-username=你的GitHub用户名 \
      --docker-password=你的GitHub PAT \
      --docker-email=你的邮箱地址
    
  • 检查你的Deployment YAML,确保spec.template.spec.imagePullSecrets里正确引用了这个Secret:
    imagePullSecrets:
      - name: regcred
    

3. 检查AKS节点的网络规则

你创建AKS时用了自定义VNet和子网,需要确认子网的NSG没有限制出站流量:

  • 登录Azure Portal,找到AKS节点所在的子网对应的NSG;
  • 查看出站规则,确保存在允许Destination: Internet、Port: 443的规则(默认AKS会创建这个规则,但如果手动修改过可能被删除);
  • 如果使用了自定义路由表,也要确认没有阻止到GitHub地址的流量。

4. 直接在AKS节点上测试镜像拉取

如果前面的步骤都没问题,可以直接登录到AKS节点上测试Docker拉取:

  • 获取节点的SSH访问权限:
    az aks nodepool get-access-profiles --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME --nodepool-name nodepool1 --name ssh --query 'sshPublicKey' -o tsv > ~/.ssh/aks_node.pub
    
  • 找到节点的公网IP,用SSH登录:
    ssh azureuser@<节点公网IP>
    
  • 在节点上执行Docker拉取命令:
    docker pull docker.pkg.github.com/XXXXX/XXXXXX/XXXXXXXXXXXX:latest
    
    如果节点上拉取失败,说明节点的Docker配置或者网络有问题;如果成功,那问题可能出在Kubernetes的Secret引用或者Deployment配置上。

5. 确认镜像的权限和tag正确性

最后再确认一遍:

  • 你的GitHub账号确实拥有该私有镜像仓库的读取权限(如果镜像在组织仓库下,需要账号是组织成员或者被授予了仓库权限);
  • 镜像的latest标签确实存在——有时候推送镜像时可能没正确设置latest标签,导致拉取失败,你可以在GitHub Packages页面确认镜像的tag列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:52:40