【发布时间】:2023-03-15 00:44:01
【问题描述】:
我在请求运行在数字海洋中的 kubernetes 集群中的 NodeJS 应用程序时遇到问题。每个请求都返回一个502 Bad Gateway Error。我不确定我错过了什么。
这是服务配置的样子
apiVersion: v1
kind: Service
metadata:
name: service-api
namespace: default
labels:
app: service-api
spec:
type: ClusterIP
ports:
- name: http
protocol: TCP
port: 80
targetPort: 3000
selector:
app: service-api
Ingress.yml 看起来像这样
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: service-api-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/limit-connections: '2'
nginx.ingress.kubernetes.io/limit-rpm: '60'
service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
service.beta.kubernetes.io/do-loadbalancer-algorithm: "round_robin"
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"
spec:
tls:
- hosts:
- dev-api.service.com
secretName: service-api-tls
rules:
- host: "dev-api.service.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: service-api
port:
number: 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"
【问题讨论】:
-
你能分享一下 netstat -plant 输出表吗?
-
@Malgorzata 我不知道如何在 kubernetes 中做到这一点。但从日志看来,请求
10.244.0.112中的内部IP与服务的集群IP不匹配。 -
只需在节点命令行netstat -plant中执行该命令即可。还提供 Nginx 配置的输出: $ kubectl exec -it -n
-- cat /etc/nginx/nginx.conf -
@Malgorzata 你可以在这里找到它gist.github.com/EmmanuelAmodu/519d87b1efb7c9a4c9e00a2a6aa2a7c9
-
你还能粘贴命令 $ kubectl describe svc service-api 的输出吗?
标签: node.js kubernetes websocket digital-ocean nginx-ingress