目前在对接keycloak过程中,通过云端LB到ingress,再由ingress到k8s-service,在配置完成之后,偶发出现502的情况。
ingress的配置,先是实现了客户端的会话保持
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: pkulaw-cas-final
name: nginx-keycloak
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
rules:
- host: xxx.product.com
http:
paths:
- backend:
serviceName: keycloak
servicePort: 8080
path: /
出现502
需要添加proxy-buffer-number的注释解决问题
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: pkulaw-cas-final
name: nginx-keycloak
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/proxy-buffer-size: "16k" #缓冲区大小
nginx.ingress.kubernetes.io/proxy-buffers-number: "8" #缓冲区数据,不加它参数多时返回502
其它缓冲区配置
代理缓冲
启用或禁用代理缓冲proxy_buffering。默认情况下,NGINX配置中禁用代理缓冲。
要为所有Ingress规则全局配置此设置,proxy-buffering可以在NGINX ConfigMap中设置该值。要在Ingress规则中使用自定义值,请定义以下注释:
nginx.ingress.kubernetes.io/proxy-buffering: "on"
代理缓冲区数
设置proxy_buffers用于读取从代理服务器接收到的响应的第一部分的缓冲区数。默认情况下,代理缓冲区数设置为4
要全局配置此设置,请proxy-buffers-number在NGINX ConfigMap中进行设置。要在Ingress规则中使用自定义值,请定义以下注释:
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
代理缓冲区大小
设置proxy_buffer_size用于读取从代理服务器接收到的响应的第一部分的缓冲区的大小。默认情况下,代理缓冲区大小设置为“ 4k”
要全局配置此设置,请proxy-buffer-size在NGINX ConfigMap中进行设置。要在Ingress规则中使用自定义值,请定义以下注释:
nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
代理最大临时文件大小
如果buffering启用了来自代理服务器的响应,并且整个响应不适合通过proxy_buffer_size和proxy_buffers指令设置的缓冲区,则可以将响应的一部分保存到临时文件中。此伪指令设置size临时文件的最大值,设置为proxy_max_temp_file_size。一次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。
零值禁用对临时文件的响应的缓冲。
要在Ingress规则中使用自定义值,请定义以下注释:
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "1024m"
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!