HTTP(S)负载均衡器-ingress

Ingress是kubernetes API的标准资源类型之一,其本质就是一组基于DNS名称(host)或URL路径把请求转发至指定的Service资源的规则,用于将集群外的请求流量转发至集群内部完成服务发布

Ingress控制器(Ingress Controller)可以由任何具有反向代理(HTTP/HTTPS)功能的服务程序实现,如Nginx、Envoy、HAProxy、Vulcand和Traefik等。Ingress控制器本身也作为Pod对象与被代理的运行为Pod资源的应用运行于同一网络中。我们在这里选择了NGINX Ingress Controller,由于对NGINX的配置较为熟悉,同时我们使用的kubernetes是阿里云的容器服务,构建集群的时候,容器服务会自带NGINX Ingress Controller。

根据实际情况Ingress调优


解决400 Request Header Or Cookie Too Large问题

现象:微信小程序需要调用后端接口,需要在header中传一段很长的token参数,直接使用浏览器访问该端口可以访问通,但是在加上token访问之后,会报“400 Request Header Or Cookie Too Large”

  <html><head><title>400 Request Header Or Cookie Too Large</title></head><body><center><h1>400 Bad Request</h1></center><center>Request Header Or Cookie Too Large</center><hr><center>nginx/1.15.6</center></body></html>

问题定位:直接修改Service使用nodeport的形式访问,则没有报错,初步定位需要在ingress中nginx配置客户端的请求头,进入Ingress Controller的Pod查询配置,果然是请求头空间不足。

    www-data@nginx-ingress-controller-5vx7x:/etc/nginx$ cat nginx.conf | grep client_header_buffer_sizeclient_header_buffer_size       1k;www-data@nginx-ingress-controller-5vx7x:/etc/nginx$ cat nginx.conf | grep large_client_header_bufferslarge_client_header_buffers     4 8k;

解决方法:在ingress中添加注释

    nginx.ingress.kubernetes.io/server-snippet: client_header_buffer_size 2046k;

Server snippet
Using the annotation nginx.ingress.kubernetes.io/server-snippet it is possible to add custom configuration in the server configuration block.
该注释是将自定义配置加入nginx的server配置中

解决请求超时问题

现象:有一个数据导出功能,需要将大量数据进行处理,然后以Excel格式返回,在导出一个大约3W条数据的时候,出现访问超时情况。

解决方法:调整proxy_read_timeout,连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理
在ingress中添加注释

    nginx.ingress.kubernetes.io/proxy-read-timeout: 600

这里需要注意的事该注释的value需要时number类型,不能加s,否则将不生效

总结

使用NGINX ingress controller的好处就是对于nginx配置相对比较熟悉,性能也不差。相关nginx配置的对应的ingress可以在 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/ 上查到。

解决kubernetes中ingress-nginx配置问题相关推荐

  1. 如何在Kubernetes中部署nginx

    1.准备 搭建Kubernetes环境,参考视频:https://www.bilibili.com/video/BV13z4y1B7kg/?spm_id_from=333.999.0.0 2.配置 m ...

  2. 在kubernetes集群中运行nginx

    在完成前面kubernetes数据持久化的学习之后,本节我们开始尝试在k8s集群中部署nginx应用,对于nginx来说,需要持久化的数据主要有两块: 1.nginx配置文件和日志文件 2.网页文件 ...

  3. 解决js跨域使用nginx配置问题

    解决js跨域使用nginx配置问题 参考文章: (1)解决js跨域使用nginx配置问题 (2)https://www.cnblogs.com/phpzhou/p/11132674.html 备忘一下 ...

  4. 一次性解决:IDEA的 maven 配置问题,在新项目中不再担心 maven 的配置问题

    Ⅰ.问题描述: 1.是否安装新的 maven 版本: 现在新出的IDEA很可能是maven已经集成了(即:自己自带的有maven环境),所以在确定是否安装其它版本的 maven 之前,最好确定一下,是 ...

  5. Kubernetes Ingress Nginx使用

    在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用.主要演示如何使用ingress nginx实现我们nginx的多样化配置,从而达到使用ingr ...

  6. vue和php怎么配置,解决Thinkphp与vue联合开发中Thinkphp的配置问题

    下面由thinkphp框架教程栏目给大家介绍Thinkphp与vue联合开发中Thinkphp的配置问题,希望对需要的朋友有所帮助! Thinkphp与vue联合开发中Thinkphp的配置问题: 1 ...

  7. k8s 集群 Ingress Nginx传递用户真实IP问题

    业务应用经常有需要用到用户真实ip的场景,比如:异地登录的风险预警.访问用户分布统计等功能等.当有这种需求的时候,在业务上容器过程中,如果用到ingress就要注意配置了.通常,用户ip的传递依靠的是 ...

  8. 9 个技巧,解决 K8s 中的日志输出问题

    作者 | 元乙  阿里云存储服务技术专家 导读:近年来,越来越多的同学咨询如何为 Kubernetes 构建一个日志系统,或者是来求助在此过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是作者想 ...

  9. Kubernetes 部署 Ingress 控制器 Traefik v1.7.4

    标签: kubernetes   ingress   traefik   nginx   haproxy   kong 介绍 Traefik Ingress 对象 上节课我们学习了在Kubernete ...

最新文章

  1. js高级程序设计之跨浏览器事件处理
  2. 字符串转为小数点,乘以一个数以后,转换为科学计数法,再把科学计数法转化为字符串
  3. 【网络传输与RTC】
  4. 4步win7下简单FTP服务器搭建(试验成功)
  5. loadView加载(变换成ScrollView)
  6. 【网站】网站不能在QQ,微信中访问,申诉办法
  7. FastDfs工作笔记002---SpringBoot集成FastDfs
  8. yii2的分页和ajax分页
  9. CAS(Central Authentication Service)——windows上简单搭建及測试
  10. php Apache配置伪静态的介绍
  11. 备忘--moodle安装
  12. objective C 随机数
  13. 偏导数,全导数,方向导数,偏微分,全微分,梯度
  14. MYSQL安装遇到MySQL-server conflicts with错误(mysql5.6.17)
  15. 留个底 人人乐旁靓房房东出租,我是房东
  16. 开务分布式数据库 Tracing(二)—— 源码解析
  17. 战场地图上的 Faked Shadow 基本实现
  18. 一道关于飞机加油的问题
  19. MySQL数据备份命令
  20. SpringMVC —— @ResponseBody原理

热门文章

  1. 符号执行:利用Angr进行简单CTF逆向分析
  2. Effective C++ Item 30 inline里里外外
  3. iOS - OC NSPoint 位置
  4. MySQL安装失败出现could not start the service mysql error:0 错误提示
  5. UIPickerView和UIDataPicker
  6. Filepicker.io
  7. MongoDB修改删除数据
  8. 软件工程心理学之---让客户知错,但不能向你发怒
  9. Springboot、Mybatis 事务示例
  10. 移动IM开发指南3:如何优化登录模块