Node.js 从Kubernetes NGINX入口控制器公开服务时始终返回502坏网关
我对在digital ocean的kubernetes集群中运行的NodeJS应用程序的请求有问题。每个请求都返回一个Node.js 从Kubernetes NGINX入口控制器公开服务时始终返回502坏网关,node.js,kubernetes,websocket,digital-ocean,nginx-ingress,Node.js,Kubernetes,Websocket,Digital Ocean,Nginx Ingress,我对在digital ocean的kubernetes集群中运行的NodeJS应用程序的请求有问题。每个请求都返回一个502坏网关错误。我不确定我错过了什么 这就是服务配置的样子 apiVersion:v1 种类:服务 元数据: 名称:服务api 名称空间:默认值 标签: 应用程序:服务api 规格: 类型:集群 端口: -名称:http 协议:TCP 港口:80 目标港:3000 选择器: 应用程序:服务api Ingress.yml看起来像这样 apiVersion:networking.
502坏网关错误
。我不确定我错过了什么
这就是服务配置的样子
apiVersion:v1
种类:服务
元数据:
名称:服务api
名称空间:默认值
标签:
应用程序:服务api
规格:
类型:集群
端口:
-名称:http
协议:TCP
港口:80
目标港:3000
选择器:
应用程序:服务api
Ingress.yml看起来像这样
apiVersion:networking.k8s.io/v1
种类:入口
元数据:
名称:服务api入口
注释:
kubernetes.io/ingres.class:nginx
cert-manager.io/cluster-issuer:letsencrypt prod
nginx.ingres.kubernetes.io/limit-connections:'2'
nginx.ingres.kubernetes.io/limit-rpm:'60'
service.beta.kubernetes.io/do-loadbalancer-protocol:“http”
service.beta.kubernetes.io/do-loadbalancer-algorithm:“循环”
service.beta.kubernetes.io/do-loadbalancer-http2-ports:“443,80”
service.beta.kubernetes.io/do-loadbalancer-tls-ports:“443”
service.beta.kubernetes.io/do-loadbalancer-tls-passthrough:“true”
规格:
tls:
-主持人:
-dev-api.service.com
secretName:服务api tls
规则:
-主机:“dev api.service.com”
http:
路径:
-路径类型:前缀
路径:“/”
后端:
服务:
名称:服务api
端口:
电话:80
每当我访问主机url时,都会出现502错误
这是nginx入口日志中显示的内容
2021/01/13 08:41:34 [error] 319#319: *31338 connect() failed (111: Connection refused) while connecting to upstream, client: IP, server: dev-api.service.com, request: "GET /favicon.ico HTTP/2.0", upstream: "http://10.244.0.112:3000/favicon.ico", host: "dev-api.service.com", referrer: "https://dev-api.service.com/status"
不需要特殊设置,404很可能来自您的实际后端。可能是配置SSL passthru的注释吗 如果在入口控制器上配置了SSL passthru,则除了端口80外,您的服务还需要公开端口443。你基本上是说pod正在终止安全连接,而不是nginx 如果是这个问题,我们将解释50X错误,这表明后端出现问题,正如我们(与@Emmanuel Amodu一起)在评论中所讨论的: 错误是使用错误的端口连接到应用程序,端口是
4000
,而不是service api
中定义的3000
对于有类似问题的社区,请-调试的最重要步骤:
$kubectl exec-it-n--cat/etc/Nginx/Nginx.conf
$kubectl描述svc服务api
是的,但在我的本地机器上websocket连接良好。你能共享netstat-plant输出表吗?@Malgorzata我不知道在kubernetes中如何做到这一点。但是从日志中可以看出,请求
10.244.0.112
中的内部IP与服务的集群IP不匹配。只需在节点命令行netstat-plant中执行此命令即可。还提供Nginx配置的输出:$kubectl exec-it-n--cat/etc/Nginx/Nginx。conf@Malgorzata您可以在这里找到它。您是否也可以粘贴命令$kubectl DESCRIPE svc service api的输出?我不确定这是否是问题所在。