如何解决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 举报,一经查实,本站将立刻删除。