Kubernetes Nginx Ingress Controller on Service without Selec



我正在尝试公开一个在入口上没有选择器的服务(使用Kubernetes官方Nginx控制器(。

当我将没有选择器的服务设置为节点端口时,它可以正常工作,并且它使用我手动定义的端点。

但是,一旦我设置了指向此服务的入口资源,我就无法使其工作。

这就是Nginx抱怨的:

connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.99.1, server: example, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8181/", host: "example"
connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.99.1, server: example, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8181/favicon.ico", host: "example", referrer: "http://example/"

这些是我的服务和入口资源:

apiVersion: v1
kind: Service
metadata:
name: example
labels:
app: example
spec:
ports:
- name: http
protocol: TCP
port: 8080
targetPort: http

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example
labels:
app: example
spec:
rules:
- host: myhostname
http:
paths:
- path: /
backend:
serviceName: example
servicePort: http

注意:我在部署后手动编辑服务的终端节点。但我看不出这会有什么不同。

有什么想法吗?


编辑:

我添加了一个带有选择器的附加服务,与另一个没有选择器的服务并行运行。

当我让入口指向没有选择器的入口时,这是 Nginx 的上游:

upstream default-old-joey-app.example-no-selector {
least_conn;
server 127.0.0.1:8181 max_fails=1 fail_timeout=10s;
}

一旦我将入口资源切换到指向带有选择器的服务,Nginx 的上流就会更新为:

upstream default-old-joey-app.example-with-selector {
least_conn;
server 172.17.0.5:8080 max_fails=1 fail_timeout=10s;
}

这可能是入口控制器的问题吗?

在入口中,您将http指示为后端中的服务端口,而服务正在侦听端口 8080。

像这样更改它,它应该可以工作:

backend:
serviceName: example
servicePort: 8080

相关内容

  • 没有找到相关文章

最新更新