我的问题:用户到Knative service/pod的所有流量都必须经过Master节点吗?
例如:我作为一个集群外的客户,创建一个curl请求到一个服务(pod HelloWorld),那么我的请求和我的请求(from pod Hello World)的返回结果是否一定要经过到达目的地之前首先是主节点?
我做了一个小测试,从外部创建一个 curl 请求到我集群中的 HelloWorld 服务,并通过 tcpdump 捕获数据包流:
在我看来:
HelloWorld 的卷曲流量到达驻留在 Master 中的kourier-internal pod。
然后流量被转发到 activator pod,它也在 Master 中。
现在流量被路由到HelloWorld pod所在的Worker节点
在Worker节点的HelloWorld中处理后,返回结果会按上述反向路径传回
我的解释对吗?对我来说,这种路由有点奇怪……它会产生额外的延迟,并给通往主节点的路径带来沉重的带宽压力:(有没有办法将流量直接从外部路由到我的 Pod 所在的工作节点?谢谢大家提前!
Knative 流量流经 HTTP 入口,这可以通过集群上的多个 pod 实现,这些 pod 可以在控制平面或工作节点上运行。 (如果您使用云提供商的 Kubernetes,您将无法在控制平面节点上运行任何 pod。)
尝试将您的
envoy
pod 扩展到 replicas: 1
之外,并确保您的负载均衡器可以将流量发送到所有副本。您应该看到流量流经多条路径。 (您可能还需要扩展 activator
副本以查看完整的分布式系统。)