问题:k8s nginx-ingress-controller Failed to upload report - 413:
413 Request Entity Too Large
解决:
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 25m
creationTimestamp: 2017-11-10T21:52:14Z
只需在ingress 里添加
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 25m
问题:414 Request-URI Too Large
分析:
HTTP request的大小限制
对于一个HTTP request请求可以分为URI,HEADER,Body三个部分。
3.1 URI
HTTP协议中没有明确限制URI长度,但是浏览器和WEB服务器一般都会有限制。
浏览器限制
IE浏览器对URL的长度现限制为2048字节。
360极速浏览器对URL的长度限制为2118字节。
Firefox(Browser)对URL的长度限制为65536字节。
Safari(Browser)对URL的长度限制为80000字节。
Opera(Browser)对URL的长度限制为190000字节。
Google(chrome)对URL的长度限制为8182字节。
WEB服务器限制
以Nginx为例,在Nginx中,参数
large_client_header_buffers number size;
默认值:large_client_header_buffers 4 8k;
用来控制request的URI长度和header大小。
当request的URI长度超过size值时报414错误,当request的header超过size值时报400错误。
解决:经测试在ingress里添加annotations:
nginx.ingress.kubernetes.io/server-snippet: client_header_buffer_size 2046k;
是无效的。
正确做法:在nginx-nginx-ingress-controller的daemonset使用的configmap添加加粗行
“data”: {
“enable-vts-status”: “false”,
"large-client-header-buffers": "512 512k"
}
容器不需要重启则问题解决
参考:https://github.com/kubernetes/ingress-nginx/issues/1824
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/