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

AWS EKS部署Nginx报错upstream主机udagram-users:8080未找到

问题排查与解决步骤

1. 检查是否漏部署业务服务的Deployment和Service

你给出的部署步骤中仅列出了密钥、配置和反向代理的部署命令,首先要确认是否已经成功部署udagram-users、udagram-feed两个业务服务的Deployment和对应Service:

  • 执行kubectl get svc查看命名空间下是否存在名称为udagram-users、udagram-feed的Service,K8s服务名大小写敏感,必须和nginx配置中写的完全一致
  • 执行kubectl get pods查看两个业务服务的Pod是否处于Running状态,无崩溃、拉取镜像失败等异常
    如果没有上述资源,先完成两个业务服务的部署,再启动反向代理。

2. 修正nginx配置中的DNS解析设置

你当前nginx配置中resolver填写的是公网DNS8.8.8.8,无法解析K8s集群内部的服务域名,需要替换为集群内部DNS:

  • 执行kubectl get svc kube-dns -n kube-system获取集群CoreDNS的ClusterIP
  • 将nginx配置中所有resolver 8.8.8.8;替换为resolver <CoreDNS的ClusterIP> valid=5s;,或者直接填写集群DNS域名resolver kube-dns.kube-system.svc.cluster.local valid=5s;

3. 优化nginx配置避免启动强依赖上游

nginx默认启动时会预先解析所有upstream块中的域名,只要有一个解析失败就会直接启动报错,可以调整配置去掉upstream块,改为动态解析模式:

worker_processes 1;

events { worker_connections 1024; }
error_log /dev/stdout debug;

http {

    sendfile on;
    
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Host $server_name;
    
    server {
        listen 8080;
        location /api/v0/feed {
            resolver           kube-dns.kube-system.svc.cluster.local valid=5s;
            proxy_pass         http://udagram-feed:8080;
        }
        location /api/v0/users {
            resolver           kube-dns.kube-system.svc.cluster.local valid=5s;
            proxy_pass         http://udagram-users:8080;
        }            
    }

}

修改后重新构建反向代理镜像再部署即可,调整后nginx启动时不会提前解析上游域名,仅在请求到来时解析,不会因为上游服务暂时不可用导致反向代理启动失败。

4. 检查命名空间匹配问题

如果你的业务服务没有部署在default命名空间,需要在nginx配置中补全完整的K8s服务域名,格式为<服务名>.<命名空间>.svc.cluster.local,比如业务服务部署在udagram命名空间,就需要将域名写为udagram-users.udagram.svc.cluster.local。

5. 验证集群DNS服务是否正常

如果上述配置都正确还是解析失败,检查集群CoreDNS是否正常运行:

  • 执行kubectl get pods -n kube-system | grep coredns,确认所有CoreDNS Pod都处于Running状态
  • 启动临时测试Pod验证解析:kubectl run -it --rm --image=busybox:1.28 dns-test -- nslookup udagram-users,如果返回解析失败,需要先排查集群CoreDNS的故障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:54:00