如何解决从 Kubernetes NGINX Ingress 控制器公开服务总是返回 502 Bad Gateway
我在请求运行在数字海洋中的 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
每当我访问主机网址时,我都会收到 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"
解决方法
会不会是配置SSL passthru的注解?
如果在您的入口控制器上配置了 SSL passthru,那么您的服务除了端口 80 之外还需要公开端口 443。您基本上是说 pod 正在终止安全连接,而不是 nginx。
如果这是问题,将解释 50X 错误,这表明后端存在问题
,正如我们(与@Emmanuel Amodu)在评论中讨论的那样:
错误是使用错误的端口连接到应用程序,端口 4000
而不是 3000
中定义的 service-api
。
对于有类似问题的社区,请-调试最重要的步骤:
- 检查 netstat -plant 输出表
- 检查您的 Nginx 配置:
$ kubectl exec -it -n <namespace-of-ingress-controller> <nginx-ingress-controller-pod> -- cat /etc/nginx/nginx.conf
- 检查服务:
$ kubectl describe svc service-api
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。