根据端口号从入口 nginx 控制器转发到不同的 nginx pods
forward from ingress nginx controller to different nginx pods according to port numbers
在我的 k8s 系统中,我有一个 nginx 入口控制器作为 LoadBalancer 并将其访问到像 hedehodo.ddns.net 这样的 ddns 地址,这会触发将网络流量转发到另一个 nginx 端口。
现在我部署了另一个在 node.js 应用程序上工作的 nginx,但我无法将 nginx 入口控制器转发到端口 3000 的任何请求去另一个 nginx
这里是 nginx 入口控制器 yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: default
spec:
rules:
- host: hedehodo.ddns.net
http:
paths:
- path: /
backend:
serviceName: my-nginx
servicePort: 80
- path: /
backend:
serviceName: helloapp-deployment
servicePort: 3000
helloapp 部署工作负载均衡器,我可以从 IP:3000
访问它
任何人都可以帮助我吗?
同一主机不能有相同的“路径:/”。为您的新服务将路径更改为不同的路径。
每个主机不能共享多个重复路径,因此在您的示例中,对主机的请求:hedehodo.ddns.net
将始终映射到列出的第一个服务:my-nginx:80
.
要使用其他服务,您必须指定不同的路径。该路径可以使用您想要的任何服务。您的入口应始终指向一个服务,而该服务可以指向一个部署。
您还应该默认为入口使用 HTTPS。
入口示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- host: my.example.net
http:
paths:
- path: /
backend:
serviceName: my-nginx
servicePort: 80
- path: /hello
backend:
serviceName: helloapp-svc
servicePort: 3000
服务示例:
---
apiVersion: v1
kind: Service
metadata:
name: helloapp-svc
spec:
ports:
- port: 3000
name: app
protocol: TCP
targetPort: 3000
selector:
app: helloapp
type: NodePort
部署示例:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloapp
labels:
app: helloapp
spec:
replicas: 1
selector:
matchLabels:
app: helloapp
template:
metadata:
labels:
app: helloapp
spec:
containers:
- name: node
image: my-node-img:v1
ports:
- name: web
containerPort: 3000
在我的 k8s 系统中,我有一个 nginx 入口控制器作为 LoadBalancer 并将其访问到像 hedehodo.ddns.net 这样的 ddns 地址,这会触发将网络流量转发到另一个 nginx 端口。 现在我部署了另一个在 node.js 应用程序上工作的 nginx,但我无法将 nginx 入口控制器转发到端口 3000 的任何请求去另一个 nginx
这里是 nginx 入口控制器 yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: default
spec:
rules:
- host: hedehodo.ddns.net
http:
paths:
- path: /
backend:
serviceName: my-nginx
servicePort: 80
- path: /
backend:
serviceName: helloapp-deployment
servicePort: 3000
helloapp 部署工作负载均衡器,我可以从 IP:3000
访问它任何人都可以帮助我吗?
同一主机不能有相同的“路径:/”。为您的新服务将路径更改为不同的路径。
每个主机不能共享多个重复路径,因此在您的示例中,对主机的请求:hedehodo.ddns.net
将始终映射到列出的第一个服务:my-nginx:80
.
要使用其他服务,您必须指定不同的路径。该路径可以使用您想要的任何服务。您的入口应始终指向一个服务,而该服务可以指向一个部署。
您还应该默认为入口使用 HTTPS。
入口示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- host: my.example.net
http:
paths:
- path: /
backend:
serviceName: my-nginx
servicePort: 80
- path: /hello
backend:
serviceName: helloapp-svc
servicePort: 3000
服务示例:
---
apiVersion: v1
kind: Service
metadata:
name: helloapp-svc
spec:
ports:
- port: 3000
name: app
protocol: TCP
targetPort: 3000
selector:
app: helloapp
type: NodePort
部署示例:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloapp
labels:
app: helloapp
spec:
replicas: 1
selector:
matchLabels:
app: helloapp
template:
metadata:
labels:
app: helloapp
spec:
containers:
- name: node
image: my-node-img:v1
ports:
- name: web
containerPort: 3000