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

AWS EKS集群自建Docker Registry经Ingress暴露后集群内访问超时求助

排查思路

1. 基础网络链路排查

  • 先在异常Worker节点执行curl -v https://docker-registry.xxxx.com,对比跳板机的执行结果:
    1. 确认域名解析的IP和跳板机解析结果一致,排查你手动写入/etc/hosts的配置是否被systemd-resolved、VPC DNS等其他服务覆盖
    2. 对比Worker节点和跳板机的安全组配置,重点检查Worker节点的出网规则是否放开了443端口访问Ingress对应负载均衡的权限,以及Ingress负载均衡的入站规则是否放开了Worker节点所在VPC网段的443访问
  • 排查AWS VPC hairpin NAT问题:如果你的Ingress绑定的是公网ELB,AWS VPC默认不支持内部节点请求公网ELB后回源到同VPC内部服务的场景,流量回包时会被ELB丢弃,直接导致超时。这是EKS环境下同集群内部服务通过公网Ingress访问的常见问题。

2. Ingress链路排查

  • 查看Nginx Ingress Controller的Pod日志:
    kubectl logs -n <你的Ingress Controller所在命名空间> <Ingress Controller Pod名>
    
    确认Worker节点发起的请求是否到达了Ingress Controller,如果没有相关访问日志,说明流量在网络层(安全组/路由表)就被拦截。
  • 确认Ingress Controller的Service配置,若使用NodePort暴露,检查Worker节点对应的NodePort端口是否被节点本地防火墙拦截。

3. Docker运行时配置排查

  • 确认证书放置路径完全匹配:证书必须放在/etc/docker/certs.d/docker-registry.xxxx.com/目录下,文件名为ca.crt,权限设置为644,所有者为root。
  • 检查Docker是否配置了HTTP/HTTPS代理:查看/etc/systemd/system/docker.service.d/下的代理配置文件,如果存在代理配置,需要将docker-registry.xxxx.com加入NO_PROXY列表,避免拉取镜像的流量走代理导致超时。
  • 所有Docker配置修改后必须执行以下命令生效:
    systemctl daemon-reload && systemctl restart docker
    

4. 替代验证&优化方案

  • 先绕过Ingress链路验证:在Worker节点直接访问Registry的ClusterIP:
    curl -v http://<docker-registry服务的ClusterIP>:5000/v2/_catalog
    
    如果可以正常返回镜像列表,说明Registry服务本身无问题,故障点确定在Ingress的公网访问链路。
  • 长期建议你配置CoreDNS重写规则,将docker-registry.xxxx.com直接解析到Registry的ClusterIP,Worker节点拉镜像直接走集群内部网络,无需经过Ingress,既可以避免当前的网络问题,也能提升拉取速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 09:06:03