【问题标题】:Where to find generated config for nginx.ingress.kubernetes.io/affinity annotation在哪里可以找到为 nginx.ingress.kubernetes.io/affinity 注释生成的配置
【发布时间】:2019-06-19 01:28:25
【问题描述】:

设置以下注解时:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "ALPHA"
nginx.ingress.kubernetes.io/session-cookie-path: /

它们在 nginx.conf 中的最终结果是什么?

我正在使用 difftool 比较前后的 nginx.conf,但配置是相同的。

如果我例如添加一个:

nginx.ingress.kubernetes.io/rewrite-target /$1

nginx.conf 得到更新。

结果:

rewrite "(?i)/myapp(/|$)(.*)" /$2 break;

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    简短的回答是这些设置存在于 nginx-ingress 使用的 lua nginx module 的内存中。

    https://kubernetes.github.io/ingress-nginx/how-it-works 的文档中提供了有关其工作原理的详细答案和说明。特别是:

    尽管重要的是要注意,我们不会在仅影响上游配置的更改上重新加载 Nginx(即当您部署应用程序时端点发生更改)。我们使用https://github.com/openresty/lua-nginx-module 来实现这一点。查看下方以了解更多关于它是如何完成的。

    下面引用的部分然后提到:

    在每次端点更改时,控制器都会从它看到的所有服务中获取端点并生成相应的后端对象。然后它将这些对象发送到在 Nginx 中运行的 Lua 处理程序。 Lua 代码依次将这些后端存储在共享内存区域中。然后对于在 balancer_by_lua 上下文中运行的每个请求,Lua 代码会检测应该从哪些端点选择上游对等点,并应用配置的负载平衡算法来选择对等点。

    有问题的后端对象具有会话和 cookie 信息。接收此信息的代码位于https://github.com/kubernetes/ingress-nginx/blob/57a0542fa356c49a6afb762cddf0c7dbf0b156dd/rootfs/etc/nginx/lua/balancer/sticky.lua#L151-L166。特别是sync函数里有这么一行:

    ngx_log(INFO, string_format("[%s] nodes have changed for backend %s", self.name, backend.name))
    

    这表明在对后端进行此类更改时,您应该在 nginx 日志中看到更改的日志条目。

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 2016-09-19
      • 2011-02-10
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多