当前位置:   article > 正文

【kubernetes系列】k8s ingress配置websocket支持_ingress 配置websocket

ingress 配置websocket

背景:公司的后端同事在代码调试过程中需要上传一个文件,调用的websocket接口

了解同事需求和现象

浏览器上传文件一直卡主,通过浏览器调试模式发现无法正常获取websocket的连接
websocket的接口访问可以通过wscat命令(需单独安装)测试。
浏览器访问报错如下:
WebSocket connection to ‘ws://*********’ faile Error during WebSocket handshake: Unexpected response code: 200

命令测试:/usr/local/node/bin/wscat -c ws://10.111.189.187:8101/aad-server/webSocket/113

不能访问

猜测引起原因以及应对方式

流量入口没有兼容ws协议访问 如nginx未配置ws协议支持
nginx反向代理要配置一些参数 来达到转发 websocket请求

解决方案

由于k8s集群入口是通过边缘路由ngress nginx来管理的会存在如下的坑

需要额外的配置进行协议转换, 需要在能配置在 ingress的 annotations中添加额外配置如下:
在这里插入图片描述

    proxy_set_header Upgrade "websocket";
    proxy_set_header Connection "Upgrade";
  • 1
  • 2

其次,由于我们访问pod里面的路劲存在变化,需要通过rewrite进行改下,规则注意括号(我弄的时候少扩了一个左斜线开始就不能正常访问)。

应用该ingress

kubectl apply -f websocket-ingress.yaml

测试链接服务

总结

websocket 使用的场景比较少,就是对环境有一定的要求,配置比较麻烦点;而rewrite使用较多,更多详情请见官网https://kubernetes.github.io/ingress-nginx/examples/rewrite/

更多关于kubernetes和运维相关的知识,请前往博客主页。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/40739
推荐阅读
相关标签
  

闽ICP备14008679号