目前在对接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"

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。