k8s~Ingress轉發出現502的問題
目前在對接keycloak過程中,通過云端LB到ingress,再由ingress到k8s-service,在配置完成之后,偶發出現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
其它緩沖區配置
代理緩沖
啟用或禁用代理緩沖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"
浙公網安備 33010602011771號