无法使用带有金丝雀注释和 100% 权重的 nginx 入口规则将流量路由到金丝雀版本

Unable to route traffic to canary release using nginx ingress rule with canary annotation and 100 % weight

我使用

比较了命名空间 A 中删除 pods 之前和之后的 nginx 控制器配置(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

命名空间Apods删除前后o/p没有区别

注意:

这是预期的行为吗?我无法找到导致此行为的原因。

在删除命名空间 A 中的 pods 之前,您需要执行以下操作。

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

here 所述,当您删除 pods 时,端点发生变化,端点发生变化既不会重新创建新的 nginx.conf 文件,也不会重新加载它。使用 HTTP POST 请求将新的端点列表发送到 Nginx 内部的 Lua 处理程序 运行。您可以检查 Lua 处理程序的日志来验证 that.In 一个相对较大的集群,该集群经常部署应用程序此功能可以节省大量的 Nginx 重新加载,否则会影响响应延迟、负载平衡质量(每次重新加载 Nginx 后重置负载平衡的状态)所以 on.When 你创建一个新的入口然后它会改变 nginx.conf 并重新加载 it.This 应该解释为什么 nginx.conf.