如何更改kubernetes中入口控制器的配置参数

时间:2017-08-30 12:55:13

标签: nginx kubernetes

我已经在kubernetes中使用nginx-ingress控制器设置了一个Web应用程序。我可以通过Nginx入口控制器公共IP访问我的应用程序。

对于超过1分钟的请求,我们收到网关连接超时错误(504)。我通过连接到pod来检查Nginx入口控制器配置,它的connection_timeout值为60s。 (问题的根本原因)

我已经尝试将参数更改为更高的值,并且对于长请求它可以正常工作,尽管Nginx入口控制器配置在一段时间后重新加载到默认值。

我们如何更改/保留Nginx入口控制器配置参数?

感谢任何帮助。提前谢谢。

2 个答案:

答案 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

来源:https://github.com/kubernetes/ingress/blob/master/examples/customization/custom-configuration/nginx/README.md

答案 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