首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用带金丝雀注释和100 %权重的nginx入口规则将流量路由到金丝雀发布。

无法使用带金丝雀注释和100 %权重的nginx入口规则将流量路由到金丝雀发布。
EN

Stack Overflow用户
提问于 2020-01-11 21:08:29
回答 1查看 1.4K关注 0票数 1
  • 我的应用程序运行在带有X版本的名称空间A中,我可以通过运行在同一个名称空间A中的nginx入口控制器访问应用程序端点。
  • 我在名称空间B中使用Y版启动相同的应用程序堆栈,并创建指向与运行在命名空间A中的控制器相同的kubernetes.io/inress.class的入口规则。
  • 另外,我启用了金丝雀注释,权重为50 %。当我尝试通过入口访问应用程序端点时,请求将根据指定的权重在运行在名称空间A中的版本X和运行在命名空间B中的版本Y之间分发。
  • 现在,我将金丝雀权重更改为100,并在命名空间B中看到所有通信量都转到Y版本。
  • 以上的一切都符合我的期望。
  • 但是,现在我从名称空间A中删除应用程序荚,但仍然保持原样
代码语言:javascript
运行
复制
- a) Service Running in namespace A (for which ingress rule is defined)
- b) Ingress rule in namespace A Nginx controller running in namespace A
- c) Namespace B has all pods running with respective service and ingress rules with 100 %

  • 现在,当我尝试访问应用程序端点时,它只是失败了。我知道名称空间A中没有活动端点(因为豆荚被删除了),但svc在名称空间A中仍然可用,而且B中的入口规则也启用了金丝雀,权重为100%,我原以为流量将被路由到名称空间B中的豆荚,但这种情况并没有发生。

我比较了nginx控制器在删除名称空间A中的豆荚( 100 %金丝雀入口规则完整)之前和之后的配置。

kubectl exec <nginx-controller-pod-name> -n <namespace> -- curl localhost:10246/configuration/backends

kubectl exec <nginx-controller-pod-name> -n <namespace> -- cat nginx.conf

在名称空间A中,删除豆荚前后的o/p没有差别。

注:

  • Nginx入口图像: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.2
  • Kubernetes版本: 1.12.7

这就是你想要的行为吗?我找不到是什么导致了这种行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 05:15:49

在删除名称空间A中的荚之前,您需要执行下面的操作。

  1. 删除金丝雀入口
  2. 指向主应用程序入口将流量发送到新版本。

正如描述的那样,当您移除豆荚时,端点会改变,端点会改变,既不会重新创建一个新的这里文件,也不会重新加载它。而是使用HTTP请求将新的端点列表发送给在Nginx中运行的Lua处理程序。您可以检查Lua处理程序的日志,以验证that.In是一个相对较大的集群,经常部署应用程序。该功能节省了大量Nginx重新加载,否则会影响响应延迟、负载平衡质量(每次重新加载Nginx重新设置负载平衡状态后),因此on.When将创建一个新的入口,然后它将更改nginx.conf并重新加载it.This应解释为什么nginx.conf中没有更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59698639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档