微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Istio-负载平衡网格将内部HTTP2流量传输到非标准端口

如何解决Istio-负载平衡网格将内部HTTP2流量传输到非标准端口

我想使用Istio对每个​​请求的所有可用副本上的我的ClusterIP服务的网状内部HTTP2流量进行负载平衡;第一次迭代旨在在单个名称空间内的两个部署之间工作,但我还不能完全做到这一点。我需要在非标准端口上进行负载平衡,我将标准端口用作控制组。

我能够配置Istio,以使从与服务FQDN的一个长期连接到标准端口80的请求可以正确循环,但是与非标准端口(例如13080)的长期连接将不循环知更鸟,相反,一个单独的Pod会收到所有请求(行为类似于Service中使用的K8s“ iptables random”方法,它仅对每个连接而不对每个请求保持平衡)。

这是我迄今为止最成功的VirtualService定义:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
Metadata:
  name: vs
  namespace: example
spec:
  gateways:
  - mesh
  hosts:
  - "*.example.com"
  http:
  - match:
    - authority:
        regex: "(.*.)?pods.example.com(:80)?"
    route:
    - destination:
        host: pods.example.svc.cluster.local
        port:
          number: 80
  - match:
    - authority:
        regex: "(.*.)?pods.example.com:13080"
    route:
    - destination:
        host: pods.example.svc.cluster.local
        port:
          number: 13080

端口在服务中的定义如下:

  - name: http2
    port: 80
    protocol: TCP
    targetPort: 80
  - name: http2-nonstd
    port: 13080
    protocol: TCP
    targetPort: 13080

使用Istio 1.6.2。我想念什么?

编辑:原始问题在端口13080的VirtualService定义权限匹配中有错字-存在exact而不是regex。但是,什么都没有改变。这支持了Istio出于某种原因会忽略非标准端口的假设。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。