【发布时间】:2019-08-19 10:43:30
【问题描述】:
我在 Kubernetes 中有一项服务,我必须通过 HTTP 在多个端口上公开该服务。
我使用 Nginx-Ingress 并且能够成功地通过端口 80 公开我的服务。(http://serviceA.example.com --> service-a:80)
但是我不能为 Http 使用不同的端口,然后是端口 80。 如何让 nginx-ingress 也监听 7049 端口。
我已经尝试在 nginx 服务上公开端口 7049,并将注解 nginx.org/listen-ports: "80,7049" 添加到 nginx 控制器。都不适合我。
我希望得到以下输出:
http://serviceA.example.com --> service-a:80
http://serviceA.example.com:7049 --> service-a:7049
入口服务.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
externalTrafficPolicy: Local
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 443
targetPort: 443
protocol: TCP
name: https
selector:
app: nginx-ingress
我的服务.yml
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
app: my-service
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 443
targetPort: 443
protocol: TCP
name: https
- port: 7049
targetPort: 7049
name: symbols
selector:
app: my-service
我的服务入口.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-service
spec:
rules:
- host: myservice.example.com
http:
paths:
- path: /
backend:
serviceName: my-service
servicePort: 80
【问题讨论】:
-
你能分享你用于 serviceA 及其入口的 yaml 文件吗?也不要更改入口控制器中的内容。这很可能仅与您的入口有关。
标签: nginx kubernetes kubernetes-ingress nginx-ingress