我已经在kubernetes中使用nginx-ingress控制器设置了一个Web应用程序。我可以通过Nginx入口控制器公共IP访问我的应用程序。
对于超过1分钟的请求,我们收到网关连接超时错误(504)。我通过连接到pod来检查Nginx入口控制器配置,它的connection_timeout值为60s。 (问题的根本原因)
我已经尝试将参数更改为更高的值,并且对于长请求它可以正常工作,尽管Nginx入口控制器配置在一段时间后重新加载到默认值。
我们如何更改/保留Nginx入口控制器配置参数?
感谢任何帮助。提前谢谢。
答案 0 :(得分:4)
nginx入口控制器可通过配置图进行自定义。
您可以通过将参数--configmap
传递给入口控制器来实现此目的。资料来源:https://github.com/kubernetes/ingress/tree/master/controllers/nginx#command-line-arguments
在kube-system
命名空间中,创建一个configmap,命名为nginx-load-balancer-conf
,然后编辑入口控制器的复制控制器或守护进程并添加--configmap=nginx-load-balancer-conf
参数。 / p>
以下是配置图的外观示例:
apiVersion: v1
data:
proxy-connect-timeout: "10"
proxy-read-timeout: "120"
proxy-send-timeout: "120"
kind: ConfigMap
metadata:
name: nginx-load-balancer-conf
如果要将上述内容保存到名为nginx-load-balancer-conf.yaml
kubectl create -f nginx-load-balancer-conf.yaml
configmap的有效配置参数:https://github.com/kubernetes/ingress/blob/master/controllers/nginx/configuration.md#allowed-parameters-in-configuration-configmap
答案 1 :(得分:0)
我在Mac上运行Minikube v0.28.0
,并且能够使用以下命令修改nginx控制器(使用附加组件启动)的配置映射:
bash-3.2$ kubectl edit pod/nginx-ingress-controller-67956bf89d-m2wd9 -n kube-system
通过添加/删除属性来编辑文件,然后保存/退出。如果您为nginx-controller容器添加日志,您将看到配置映射正在动态更新(无需重新启动容器):
I0720 20:22:16.835539 7 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"nginx-load-balancer-conf", UID:"f7dfcf62-8b6b-11e8-933d-08002782c59f", APIVersion:"v1", ResourceVersion:"69386", FieldPath:""}): type: 'Normal' reason: 'UPDATE' ConfigMap kube-system/nginx-load-balancer-conf