我有一个客户端对kubernetes管理的gRPC服务进行异步调用。函数调用计算量很大,每个函数调用都需要一段时间才能完成。因此,许多调用都会等待队列中的响应(如本教程中所示https://grpc.io/docs/tutorials/async/helloasync-cpp.html或更具体的https://github.com/grpc/grpc/blob/v1.4.x/examples/cpp/helloworld/greeter_async_client2.cc)。我注意到所有的调用都是由同一个pod提供的,其他pod在我的集群中仍未使用。
如果我启动客户端的多个实例,它会选择不同的节点或pod,但我对这种情况感兴趣,因为来自一个异步客户端连接的调用。
这可能吗?如果可行,是否需要一些特定的配置?
(我意识到我可以从一个脚本打开许多连接,但这似乎不是最佳的?)
我还应该提一下,我只使用kubeadm设置的几个节点运行本地kubernetes设置。
答案 0 :(得分:0)
kube-proxy是一个L4负载均衡器,因此它无法区分一个流中的单独http请求(L7)。根据您尝试实现的目标,L7代理(支持HTTP / 2)可能是一种解决方案。
本文档中有一个很好的概述:https://grpc.io/blog/loadbalancing