部署的websocket无法通过ingress边界路由
来源:6-7 istio服务治理演示
懒虫小子
2019-03-29
我的环境
- k8s部署环境: 本地虚拟机搭建的集群,1 master + 2 nodes
- k8s版本: v1.14.0,昨天被我升级为:v1.14.0
- k8scni插件:
weave
或flannel
- LoadBalancer Provider: metallb
- Ingress: k8s 维护的ingress-nginx 和nginx社区维护的ingress-nginx都尝试过
存在问题
wssocket通过ingress路由进行握手。
wssocket无法通过ingress路由进行握手。
如果通过service
暴露出的ip和端口进行握手是没有问题的,如下下图:
如果将service type的设置的类型设置为:NodePort
,通过映射的ip和端口就无法进行握手,如下图:
通过 nginx-ingress 进行握手也是不行的,如下图:
nginx的配置文件如下:
# configuration for default/wsservice-ingress
upstream default-wsservice-ingress-wsservice.dev.ifoc.com-wsservice-96 {
random two least_conn;
server 10.46.0.5:96 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_tokens on;
server_name wsservice.dev.ifoc.com;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
client_max_body_size 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering on;
proxy_pass http://default-wsservice-ingress-wsservice.dev.ifoc.com-wsservice-96;
}
}
请问老师,这个可能是什么原因造成的,怎么处理?
如何建立握手
ws://ip:port/v1/releaseeval?flightId=1232
老师可以参考我的部署的应用:
https://gitee.com/liuhll2/wsservice-k8s-deploy
写回答
1回答
-
tonybai
2019-03-29
你好,通过nodeport无法建立ws connection,挺意外的。你试试在nodeport情况下,telnet 这个service,看连接是否通!在有ingress的情况下,查看一下ingress-controller的访问日志(nginx的access日志),看看能否查出写蛛丝马迹。
00
相似问题