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

这篇具有很好参考价值的文章主要介绍了【kubernetes系列】k8s 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中添加额外配置如下:
k8s websocket,Kubernetes,kubernetes,websocket,容器

    proxy_set_header Upgrade "websocket";
    proxy_set_header Connection "Upgrade";

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

应用该ingress

kubectl apply -f websocket-ingress.yaml

测试链接服务

总结

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

更多关于kubernetes和运维相关的知识,请前往博客主页。文章来源地址https://www.toymoban.com/news/detail-736950.html

到了这里,关于【kubernetes系列】k8s ingress配置websocket支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【一起来学kubernetes】7、k8s中的ingress详解

    Ingress 是Kubernetes集群中的一种资源类型,用于实现用域名的方式访问Kubernetes内部应用。它为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机。在生产环境中常用的Ingress有 Treafik 、 Nginx 、 HAProxy 、 Istio 等。基本概念是在Kubernetes v 1.1版中添

    2024年02月05日
    浏览(46)
  • Kubernetes(k8s)当中安装并使用ingress暴露应用

    当我们使用不同类型的服务来暴露应用的时候会遇到一下问题: LoadBalancer :当我们在使用LoadBalancer类型的Service暴露服务的时候,一般都需要占用一个公网或者是内网IP地址。使用ingress我们就可以通过一个IP地址暴露多个服务。Ingress会根据客户端输入的不同的域名来确定我们

    2024年02月11日
    浏览(44)
  • 用Kubernetes(k8s)的ingress部署https应用

    我之前有一片文章写的是用ingress暴露应用,这篇文章接着上一片文章继续讲使用ingress暴露https的应用。请先参考上一片文章将ingress先在Kubernetes集群当中安装上: ingress暴露应用文章地址:https://blog.csdn.net/m0_51510236/article/details/132536519 因为是暴露https,所以需要域名证书。分以

    2024年02月10日
    浏览(46)
  • 飞天使-k8s知识点22-kubernetes实操7-ingress

    ingress 概念理解 环境准备 准备service和pod tomcat-nginx.yaml 创建ingress-http.yaml 验证效果 https 代理 创建证书 创建ingress-https.yaml 效果 查看映射到公网端口 参考文档: https://znunwm.top/archives/121212#7.4-ingress%E4%BB%8B%E7%BB%8D

    2024年02月22日
    浏览(44)
  • 【云原生 | Kubernetes 系列】K8s 实战 Kubernetes 对象管理之指令式命令管理和配置文件命令式管理

    kubectl 工具能够支持三种对象管理方式: 声明式对象配置 指令式命令 指令式对象配置 前面我使用了两篇文章讲解了 使用配置文件对 Kubernetes 对象进行声明式管理 的相关知识点,本篇文章我将带领大家一起学习剩下的两个Kubernetes 对象管理的指令式命令管理和配置文件命令式

    2023年04月15日
    浏览(81)
  • k8s配置ingress访问集群外部资源

    使用ingress访问外部资源,首先需要创建service指向我们需要访问的资源 而每个service包含一个endpoint endpoint是k8s集群中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod的访问地址。service配置selector,endpoint controller才会自动创建对应的endpoint对象;否则,不会生

    2024年02月09日
    浏览(42)
  • K8s的ingress-nginx配置https

    在另一台机器上配置hosts解析www.yaoyao.com,然后访问 curl --cacert tls.crt https://www.yaoyao.com:10443 这里的10443端口是ingress-nginx-controller服务暴露的nodeport端口

    2024年02月07日
    浏览(37)
  • k8s ingress 添加获取客户端真实ip配置

    本环境是一个互联网ip服务器上的nginx转发k8s集群内的ingress域名,实现所有服务通过域名访问, 默认配置下,在pod内获取客户端请求地址信息时,获取的是pod的ip和节点ip。要获取客户端ip,需要添加nginx配置中 除此之外还需要修改configmap ingress-nginx-controller ,增加如下配置

    2024年02月02日
    浏览(42)
  • K8S应用笔记 —— 签发自签名证书用于Ingress的https配置

    在本地签发自命名证书,用于 K8S 集群的 Ingress 的https配置。 前提条件: 完成 K8S 集群搭建。 完成证书制作机器的 openssl 服务安装。 2.1.1 CA.sh脚本准备 注意事项: openssl 服务默认 CA.sh 地址为: /etc/pki/tls/misc/CA.sh ,为证书拷贝方便基于原 CA.sh 进行复制对其原部分路径改写(改

    2024年02月12日
    浏览(46)
  • 【k8s完整实战教程5】网络服务配置(nodeport/loadbalancer/ingress)

    系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语: 再小的帆,也能远航! 【k8s完整实战教程0】前言 【k8s完整实战教程1】源码管理-Coding 【k8s完整实战教程2】腾讯云搭建k8s托管集群 【k8s完整实战教程3】k8s集群部署kubesphere 【k8s完整实战教程4】使用

    2024年02月13日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包