【问题标题】:Traefik load balancing weight not working as per expectationTraefik 负载平衡权重未按预期工作
【发布时间】:2019-06-07 00:57:11
【问题描述】:

我为 traefik 配置了以下入口,但 traefik 将整个流量发送到 app-blue-release。理想情况下,它应该只将 30% 的流量发送到蓝色,将 70% 的流量发送到绿色,但它并没有按预期工作。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    traefik.frontend.entryPoints: http
    traefik.ingress.kubernetes.io/service-weights: |-
      app-green-release: 70.0
      app-blue-release: 30.0
  creationTimestamp: 2019-06-04T06:00:37Z
  generation: 2
  labels:
    app: traefik-app
  name: traefik-app
  namespace: mynamespace
  resourceVersion: "645536328"
  selfLink: /apis/extensions/v1beta1/namespaces/mynamespace/ingresses/traefik-app
  uid: 4637377-747b-11e9-92ea-005056aeabf7
spec:
  rules:
  - host: mycompany2.com
    http:
      paths:
      - backend:
          serviceName: app-release
          servicePort: 8080
  - host: mycompany.com
    http:
      paths:
      - backend:
          serviceName: app-ui-release
          servicePort: 80
        path: /widget
      - backend:
          serviceName: app-green-release
          servicePort: 8080
        path: /
      - backend:
          serviceName: app-blue-release
          servicePort: 8080
        path: /
status:
  loadBalancer: {}

我正在使用以下流量版本。 traefik:v1.7.11-alpine

早些时候,当权重配置为 10(蓝色)和 90(绿色)时,它工作正常。但是一旦我们分别更改为 30 和 70,就会出现这个问题。

以前有人遇到过这样的问题。提前感谢您的帮助

【问题讨论】:

    标签: kubernetes load-balancing traefik


    【解决方案1】:

    后面好像是traefik issue 4494(而不是你自己的issue 4940)

    注释ingress.kubernetes.io/service-weights 已被添加到v1.7 中,在注释被忽略之前。

    不过,as of June 11th, 2019,Damien Duportal(Træfik 的开发者倡导者)补充道:

    目前没有已知的解决方法。
    我们正在努力,但是由于 Traefik 的 2.0 版本目前正在开发中,我们必须等待:)


    来自PR 3112

    提供了一个新的入口注解 ingress.kubernetes.io/backend-weights,它指定了一个 YAML 编码的、基于百分比的权重分布。有了这个注解,我们可以通过动态调整入口后端的权重来进行金丝雀发布。

    (最初称为 ingress.kubernetes.io/percentage-weights,然后在 commit 11f6079 中重命名为 ingress.kubernetes.io/service-weights)

    这个问题仍然悬而未决。
    首先尝试升级到v1.7.12-alpine 以检查问题是否仍然存在。

    The example 提及:

    service_backend1: 1% # Note that the field names must match service names referenced in the Ingress object.
    service_backend2: 33.33%
    service_backend3: 33.33% # Same as 33.33%, the percentage sign is optional
    

    所以在你的情况下,请尝试:

      app-green-release: 70%
      app-blue-release: 30%
    

    【讨论】:

    • 感谢您的评论,但您提供的提交已经在 1.7 分支中。此问题间歇性发生,但这使得 traefik 对于生产操作“不那么可靠”。
    • @nagendra547 我知道这个提交已经在 1.7 分支中:这个想法是为了说明这个功能来自哪个提交。
    • @nagendra547 但正如我在回答中所说,这个问题仍然悬而未决:如果我看到任何进展,我会监控它并在这里报告。
    • 是的。感谢您的回复。我还报告过这个问题在 traefik github 中。 github.com/containous/traefik/issues/4940。我猜你已经回复了这个。
    • @nagendra547 如果您在我的回答的第一行看到,我确实提到了问题 4940。
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 2017-03-23
    • 2018-11-22
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2013-09-25
    相关资源
    最近更新 更多