首页 文章

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

提问于
浏览
4

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

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

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

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

感谢任何帮助 . 提前致谢 .

2 回答

  • 4

    nginx入口控制器可通过configmap进行定制 .

    您可以通过将参数 --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 参数 .

    以下是configmap的外观示例:

    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

  • 0

    我在Mac上运行Minikube v0.28.0 并且能够使用以下命令修改nginx控制器的配置映射(使用加载项启动):

    bash-3.2$ kubectl edit pod/nginx-ingress-controller-67956bf89d-m2wd9 -n kube-system
    

    通过添加/删除属性来编辑文件,然后保存/退出 . 如果您为nginx-controller pod添加日志,您将看到配置映射动态更新(无需重新启动pod):

    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
    

相关问题