k8s~Ingress轉(zhuan)發出現502的問題(ti)
目前在對接keycloak過程中(zhong),通過云(yun)端LB到ingress,再由ingress到k8s-service,在配置完成之后(hou),偶發出現502的情況。
ingress的配置,先是實現了客戶端的會話保持
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: 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: 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
其它緩沖區配置
代理緩沖
啟用(yong)(yong)或禁(jin)用(yong)(yong)代理緩(huan)沖(chong)(chong)proxy_buffering。默認情況下,NGINX配置(zhi)中(zhong)禁(jin)用(yong)(yong)代理緩(huan)沖(chong)(chong)。
要為所有Ingress規則全局配置(zhi)此設置(zhi),proxy-buffering可以在NGINX ConfigMap中設置(zhi)該值。要在Ingress規則中使(shi)用自(zi)定(ding)義值,請定(ding)義以下注釋(shi):
nginx.ingress.kubernetes.io/proxy-buffering: "on"
代理緩沖區數
設置(zhi)(zhi)proxy_buffers用于讀取從代理服務器接收到的(de)響應(ying)的(de)第一部(bu)分(fen)的(de)緩沖(chong)(chong)區(qu)數。默認情況(kuang)下(xia),代理緩沖(chong)(chong)區(qu)數設置(zhi)(zhi)為(wei)4
要全(quan)局配置(zhi)此設置(zhi),請proxy-buffers-number在(zai)NGINX ConfigMap中(zhong)進行(xing)設置(zhi)。要在(zai)Ingress規則中(zhong)使用自定義值(zhi),請定義以下(xia)注釋:
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
代理緩沖區大小
設置proxy_buffer_size用于讀取從(cong)代理服務(wu)器接收到的響(xiang)應的第一部分的緩沖區的大小(xiao)(xiao)。默認(ren)情況下,代理緩沖區大小(xiao)(xiao)設置為“ 4k”
要(yao)全局配置(zhi)此設(she)置(zhi),請proxy-buffer-size在(zai)NGINX ConfigMap中(zhong)(zhong)進(jin)行(xing)設(she)置(zhi)。要(yao)在(zai)Ingress規(gui)則中(zhong)(zhong)使用自(zi)定(ding)義值,請定(ding)義以下注釋:
nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
代理最大臨時文件大小
如果buffering啟用了來自代理服務器的響應(ying),并且整個(ge)響應(ying)不適合通(tong)過proxy_buffer_size和(he)proxy_buffers指令(ling)設置的緩(huan)沖(chong)區,則可以將響應(ying)的一部分保存到臨時(shi)文件(jian)(jian)(jian)中。此偽(wei)指令(ling)設置size臨時(shi)文件(jian)(jian)(jian)的最大值(zhi),設置為proxy_max_temp_file_size。一次寫入臨時(shi)文件(jian)(jian)(jian)的數據大小由(you)proxy_temp_file_write_size指令(ling)設置。
零值禁用對臨時文件的響應的緩沖。
要在(zai)Ingress規則中使(shi)用自定(ding)(ding)義值,請定(ding)(ding)義以下注釋:
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "1024m"