解决kubernetes中ingress-nginx配置问题
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 annotationnginx.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配置问题相关推荐
- 如何在Kubernetes中部署nginx
1.准备 搭建Kubernetes环境,参考视频:https://www.bilibili.com/video/BV13z4y1B7kg/?spm_id_from=333.999.0.0 2.配置 m ...
- 在kubernetes集群中运行nginx
在完成前面kubernetes数据持久化的学习之后,本节我们开始尝试在k8s集群中部署nginx应用,对于nginx来说,需要持久化的数据主要有两块: 1.nginx配置文件和日志文件 2.网页文件 ...
- 解决js跨域使用nginx配置问题
解决js跨域使用nginx配置问题 参考文章: (1)解决js跨域使用nginx配置问题 (2)https://www.cnblogs.com/phpzhou/p/11132674.html 备忘一下 ...
- 一次性解决:IDEA的 maven 配置问题,在新项目中不再担心 maven 的配置问题
Ⅰ.问题描述: 1.是否安装新的 maven 版本: 现在新出的IDEA很可能是maven已经集成了(即:自己自带的有maven环境),所以在确定是否安装其它版本的 maven 之前,最好确定一下,是 ...
- Kubernetes Ingress Nginx使用
在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用.主要演示如何使用ingress nginx实现我们nginx的多样化配置,从而达到使用ingr ...
- vue和php怎么配置,解决Thinkphp与vue联合开发中Thinkphp的配置问题
下面由thinkphp框架教程栏目给大家介绍Thinkphp与vue联合开发中Thinkphp的配置问题,希望对需要的朋友有所帮助! Thinkphp与vue联合开发中Thinkphp的配置问题: 1 ...
- k8s 集群 Ingress Nginx传递用户真实IP问题
业务应用经常有需要用到用户真实ip的场景,比如:异地登录的风险预警.访问用户分布统计等功能等.当有这种需求的时候,在业务上容器过程中,如果用到ingress就要注意配置了.通常,用户ip的传递依靠的是 ...
- 9 个技巧,解决 K8s 中的日志输出问题
作者 | 元乙 阿里云存储服务技术专家 导读:近年来,越来越多的同学咨询如何为 Kubernetes 构建一个日志系统,或者是来求助在此过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是作者想 ...
- Kubernetes 部署 Ingress 控制器 Traefik v1.7.4
标签: kubernetes ingress traefik nginx haproxy kong 介绍 Traefik Ingress 对象 上节课我们学习了在Kubernete ...
最新文章
- js高级程序设计之跨浏览器事件处理
- 字符串转为小数点,乘以一个数以后,转换为科学计数法,再把科学计数法转化为字符串
- 【网络传输与RTC】
- 4步win7下简单FTP服务器搭建(试验成功)
- loadView加载(变换成ScrollView)
- 【网站】网站不能在QQ,微信中访问,申诉办法
- FastDfs工作笔记002---SpringBoot集成FastDfs
- yii2的分页和ajax分页
- CAS(Central Authentication Service)——windows上简单搭建及測试
- php Apache配置伪静态的介绍
- 备忘--moodle安装
- objective C 随机数
- 偏导数,全导数,方向导数,偏微分,全微分,梯度
- MYSQL安装遇到MySQL-server conflicts with错误(mysql5.6.17)
- 留个底 人人乐旁靓房房东出租,我是房东
- 开务分布式数据库 Tracing(二)—— 源码解析
- 战场地图上的 Faked Shadow 基本实现
- 一道关于飞机加油的问题
- MySQL数据备份命令
- SpringMVC —— @ResponseBody原理