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