k8s中ingress-nginx特定参数的设置是否生效的判断

ingress-nginx 参数设置

一般有两部分,一部分为通用的直接设置在nginx中的,这部分可以到对应的ConfigMap中去寻找并使用。默认的基本不用修改。还有是每个ingress定制的一些参数,如websocket,header,等在nginx.server节点中配置的参数。

效果验证
  1. 一般可以通过应用的请求效果验证, 比较简单.
  2. 也可以通过nginx-ingress-controller中的容器的日志和配置文件验证。最有效。
    2.1 默认位置在pod[nginx-ingress-controller]-容器[nginx]中nginx的配置目录中(如果有多个pod,只需要观察其中一个即可,配置是相同的),即/etc/nginx/conf.d中的.conf文件。该文件即为最终效果。
    2.2 通过修改pod的对应配置文件来改变最终的配置文件,通过对比查看是否生效。
设置方法
  1. 配置添加的位置一般为metadata.annotations,配置为k-v类。
  2. 由于使用的ingrss-nginx容器不同,参数名有所不同(如:nginx.ingress.kubernetes.iokubernetes.ionginx.org等前缀),具体要看对应的文档。最直接有效。
  3. 为了方便可以使用以下方法:
metadata:
  annotations:  	  										#使用不同的key设置下参数名
  	kubernetes.io/proxy-read-timeout: '1801'				#设置不同的参数值,来检验
  	nginx.org/proxy-read-timeout: '1802'					#根据nginx配置文件,
  	nginx.ingress.kubernetes.io/proxy-read-timeout: '1800'	#可以知道具体那种方式生效。
  1. 对于websocket配置,可以设置:
metadata:
  annotations:  
	nginx.org/websocket-services: service-name  <---你的服务名  #前缀根据上一步的结果设置
	nginx.org/proxy-http-version: "1.1"								#建议同时设置以下参数
	nginx.org/proxy-read-timeout: "3600"
	nginx.org/proxy-send-timeout: "3600"			   

这些参数可以让nginx-ingress-controller在配置文件中自动生成websocket所需要的配置。效果如下:

server {
	location / {
        set $service service-name;  <---服务名
        proxy_http_version 1.1;    <--- websocket需要的配置
        proxy_set_header Upgrade $http_upgrade; <--- websocket需要的配置
        proxy_set_header Connection $connection_upgrade; <--- websocket需要的配置
        proxy_connect_timeout 30s;
        proxy_read_timeout 1800s;
        proxy_send_timeout 3602s;
   }
}

以上经验可以解决rancher在远程访问时,无法链接到websocket端的问题。
该问题会导致在UI页面查看日志 和 打开容器的命令窗口是失效,表现为无法连接和ws连接失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值