kubernetes - Kubernetes入口控制器相同路径多个端口
问题描述
我在 node js 中有一个应用程序,它公开 2 个端口,80 个用于 web,5000 个用于带有 websockets 的通知服务。我想在 azure kubernetes 服务中进行部署,并按照教程https://docs.microsoft.com/en-us/azure/aks/ingress-tls进行操作。一切正常,但 websockets 不行。
这是入口控制器的 yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dih-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- www.mydomain.com
secretName: tls-secret
rules:
- host: www.mydomain.com
http:
paths:
- path: /(.*)
pathType: Prefix
backend:
service:
name: dihkub-9865
port:
number: 80
这是服务 yaml 中的端口配置:
spec:
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
- name: websocket
protocol: TCP
port: 5000
targetPort: 5000
selector:
app: dihkub-9865
clusterIP: 10.0.147.128
type: ClusterIP
我是新手,很抱歉我的英语不好,谢谢
编辑:这是入口控制器的新 yaml 文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dih-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- www.mydomain.com
secretName: tls-secret
rules:
- host: www.mydomain.com
http:
paths:
- path: /socket.io/(.*)
backend:
service:
name: dihkub-9865
port:
number: 5000
- path: /(.*)
pathType: Prefix
backend:
service:
name: dihkub-9865
port:
number: 80
带有 url /socket.io/ 的请求返回错误 502,现在我将服务与负载均衡器一起放置,所以现在我有 2 个公共 IP,入口控制器处理对端口 80 的请求,服务处理来自 websocket 的请求。这是不对的,但现在它有效:(
尽管 websockets 使用的证书无效,因为它们不适用于入口控制器中配置的域,并且拥有 2 个公共 IP 有点贵。
解决方案
You probably need something like:
- path: /websockets
pathType: Prefix
backend:
service:
name: dihkub-9865
port:
number: 5000
Or whatever path you want to use for the websockets server.
推荐阅读
- java - 我无法让它在 java 中的工资单程序上正确扣除。我得到的错误是我的变量之一尚未初始化
- javascript - Vue.js/NuxtJS - 如何创建具有可通过 JSON 配置文件自定义的默认设计的组件
- docksal - Docksal 和 Git 浅问题
- javascript - React-Redux:操作已分派,但 Reducer 未更新状态
- python - 为什么带有 @tf.function 的 TensorFlow 2.x 的速度是 pytorch 的两倍?
- bison - 我的解析器没有意识到它应该采用规则的第二个分支
- excel - 如何在 Excel 中为注释的特定行(存在条件)着色?
- java - 坐标需要正则表达式
- python - 通过使用因子(乘法)从方程中过滤/保存项
- python - 我怎样才能加快我的蛮力攻击?