k8s-ingress配置websocket支持_k8s ingress websocket-程序员宅基地

问题分析

表现形式

websocket链接 报错 200

1
Copy
WebSocket connection to 'ws://*********' faile Error during WebSocket handshake: Unexpected response code: 200

 

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

  • 后端服务某些filter或者interceptor不兼容ws协议
    排查后端服务的filter 或者interceptor 代码
    实在不行 将websocket地址给放开限制

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

    1
    2
    3
    4
    5
    
    Copy
    location /websocket地址 {
      proxy_pass http://websocket服务;
      proxy_set_header Upgrade "websocket";
      proxy_set_header Connection "Upgrade";
    }
    

解决方案

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

  • 额外的配置 只能配置在 ingress的 metadata中 这样在一个ingress中会全部生效

那么这个时候有两种方案 来解决

1: ingress转发tcp 内部增加一个nginx 进行分发

略。。。 因为这个方案 为认为是回避了k8s的原则 不使用此方案 理论上 这个方案是很好做的 就是有点违背k8s的玩法

2: 配置一个新的单独为所有websocket服务服务的ingress

参考文档: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#configuration-snippet
新增一个配置如下的ingress 文件名为 websocket-ingress.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Copy
apiVersion: extensions/v1beta1     
kind: Ingress    
metadata:           
  name: ingress名称
  namespace: ingress所属命名空间
  annotations:           
    #ingress使用那种软件 
    kubernetes.io/ingress.class: nginx
    #配置websocket 需要的配置   
    nginx.ingress.kubernetes.io/configuration-snippet: |
       proxy_set_header Upgrade "websocket";
       proxy_set_header Connection "Upgrade";
spec:      
  rules: 
  - host: 识别的域名
    http:
      paths: 
        #代理websocket服务
      - path: /websocket地址
        backend:
          serviceName: websocket服务名称
          servicePort: websocket服务端口

 

启动该ingress

1
Copy
kubectl apply -f websocket-ingress.yaml

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/educast/article/details/106947127

智能推荐

jquery图片轮播带缩略图_jq带缩略图的呼吸轮播-程序员宅基地

文章浏览阅读618次。(1)html 标签:div class="lb_list"> span class="btn left_btn">span> div class="large_box"> ul> li> img src="images/img1.jpg" width="530" height="350"> _jq带缩略图的呼吸轮播

熊海cms渗透测试-程序员宅基地

文章浏览阅读1.8k次。熊海cms渗透测试_熊海cms

什么是软件测试-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏32次。1.软件测试的定义在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。(1)规定的条件(2)目的:发现程序错误,衡量软件质量通俗定义:软件测试是一种实际输出与预期输出之间的审核或者比较过程。设计过程当中:预期结果<------>实际输出需求测试是保证实际输出与预期输出之间的审核或比较过程,及时发现软件Bug与缺陷,避免项目上线由于Bug给公司带来损失。2.软件开发模型瀑布模型、快速原型模型、螺旋模型(1)_什么是软件测试

不会写只会说是不是一种才啊_不会说只会写-程序员宅基地

文章浏览阅读307次。写代码没有耐心,何况自己水平又那么烂,只会空想着这要有什么功能,指点着,自己又不会,不知道别人是不是很讨厌我啊?看同学个个有了工作,自己还没有,望着工作要求而叹,什么都不会,只知道一点点。每次有个好的IDear,感觉上都会实现的,只是自己不会编程啊,要是手里有个团队就好了,这个功能XX去做,XXX你去做这个部分,看来我只是做狗头军师的料,不知道我这只千里马何人才能相中啊!!_不会说只会写

根据银行卡号码获取银行卡归属行以及logo图标_支付宝获取银行图标-程序员宅基地

文章浏览阅读1.2k次。转自:https://blog.csdn.net/qq_28268507/article/details/68941754之前做商城的时候遇到过根据银行卡号码获取银行归属地信息以及银行logo的需求,当初参考的是网上的一篇博客android根据银行卡卡号判断银行后来觉得数据不够权威或者数据信息不全,最近又发现了一个新的api接口,支付宝提供的根据银行卡号码获取银行卡归属地信息接口地址:..._支付宝获取银行图标

[前端网站源码]基于HTML5,DIV CSS实现的酒店运营与推广(静态网页设计)_酒店网页设计动态效果代码csdn-程序员宅基地

文章浏览阅读34次。该项目使用HTML5、CSS3、DIV开发的静态网站,是针对需要做前段网页设计相关毕设课设的同学,前段相关知识点老师都有讲过可以免费学习,以及怎么改项目中图片和文字都有相关教程,教同学们怎么将项目改成独一无二的一份,就算是零基础的同学也可以非常轻松搞定前段网页毕设课设项目,对于基础不好的同学是不错的选择。..._酒店网页设计动态效果代码csdn

随便推点

VO:简单的视觉里程计代码注释(代码可运行)_视觉里程计开源代码-程序员宅基地

文章浏览阅读5.5k次,点赞6次,收藏65次。走完SLAM十四讲前端之后,代码都已经注释完,但还是感觉有点迷茫,所以专门参考冯兵的博客,实现简单的视觉里程计。收获是又重新认识到了C++基础的薄弱,决定之后的晚上要刷牛客题。不过就SLAM前端而言这部分基本可以理解代码了,这篇对VO代码进行注释。基本过程:1、获取图像2、对图像进行处理3、通过FAST算法对图像进行特征检测,通过KLT光流法跟踪图像的特征,如果跟踪的特征有所丢失,特..._视觉里程计开源代码

@mapperscan 匹配一个或多个包_一起做ROSDEMO:基于find_object_2d的目标模板匹配识别...-程序员宅基地

文章浏览阅读1k次。转载文章标注:本文转自CSDN,作者:跃动的风原文链接:https://blog.csdn.net/qq_23670601/article/details/93663974我们希望机器人能够更加智能一点,抓住我们想要的任何东西,而不是通过贴标签(ar_makrer)或者简单的颜色过滤分割(比如固定识别某纯色物体)来进行目标物体的识别。所以我们打算采用其他的方法来进行目标的识别识别。目前我..._@mapperscan后缀匹配

react 项目使用highcharts滚动条来展示数据_highstock react-程序员宅基地

文章浏览阅读1.6k次。在使用图表画图的时候总会,由于展示的面积有限,无法将数据完全展示到图表中,这个时候就可能考虑使用滚动条来滑动展示数据。 讲一下过程,我首先找资源,找到了这个,发现很适合我的需求。 highcharts很有意思,他单独的为react创立了一个包叫react-highcharts,如果你引入这个包,并且你想使用滚动条来实现,要引入: var ReactHighstock = require(..._highstock react

04.SSM框架整合-Mybatis映射文件的存放路径注意事项_ssm映射资源文件夹-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏13次。一: Mapper接口与映射文件在同一目录下方式一:同一目录,位置不同在Spring的核心配置文件中,配置了在指定包下批量扫描mapper映射文件: <!-- 批量扫描mapper包,创建代理对象 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.lg.mapper"/>_ssm映射资源文件夹

loadrunner运行场景时,常见错误及解决方法_loadrunner报错link调试-程序员宅基地

文章浏览阅读1.8k次。目录1、Error -27727:.32、Error -27728:.33、Error -27791:.34、Error -27492:.45、Error -27498:.46、Error -26612:.47、Error -27496:.58、Error -27995:.59、Error -27279:...510、Error -27796.5..._loadrunner报错link调试

计算机维修知识论文,计算机维修论文2000字-程序员宅基地

文章浏览阅读210次。如何保养和维护好一台计算机,最大限度地延长计算机的使用寿命,这是我们非常关心和经常面临的问题。下面是答.案.网 ZQNF.Com小编给大家推荐的计算机维修论文2000字,希望大家喜欢!计算机维修论文2000字篇一  《浅谈计算机硬件的维护维修》【摘要】计算机维护分硬件维护和软件维护两部分,硬件维护主要是指计算机上主板、显卡、处理器、硬盘、显示器等硬件设备的维护。【关键词】计算机硬件;故障;维护维修..._基于知识库的计算机硬件维修服务系统论文