Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带API网关的kubernetes RPC微服务_Kubernetes_Rpc_Aws Api Gateway - Fatal编程技术网

带API网关的kubernetes RPC微服务

带API网关的kubernetes RPC微服务,kubernetes,rpc,aws-api-gateway,Kubernetes,Rpc,Aws Api Gateway,我使用RPC协议应用程序作为微服务 在他们面前有一个API网关作为代理 现在我想使用k8s部署微服务,API网关在k8s集群之外,RPC微服务由k8s部署,我的集群中有三个副本RPC微服务 我的问题是如何直接访问k8s的pod,因为我必须构建一个连接池来保存这些连接,例如,我有三个RPC微服务pod 这是我的架构 您不应该直接从pod使用RPC微服务,而应该通过Kubernetes服务 首先,您必须将RPC公开为公共K8S服务,这将为您提供一个它正在侦听的端口。使用集群的IP(当然可以不止一个)

我使用RPC协议应用程序作为微服务 在他们面前有一个API网关作为代理

现在我想使用k8s部署微服务,API网关在k8s集群之外,RPC微服务由k8s部署,我的集群中有三个副本RPC微服务

我的问题是如何直接访问k8s的pod,因为我必须构建一个连接池来保存这些连接,例如,我有三个RPC微服务pod

这是我的架构

您不应该直接从pod使用RPC微服务,而应该通过Kubernetes服务

首先,您必须将RPC公开为公共K8S服务,这将为您提供一个它正在侦听的端口。使用集群的IP(当然可以不止一个)和该端口,您将能够使用您的RPC微服务

查看文档以了解如何公开它:

您可以使用
主机网络
配置参数直接访问pod。但是,Kubernetes不推荐:


如果您需要在副本之间保留共享会话或类似的内容,我会使用另一个外部组件,如Redis或类似的内容。

感谢您的评论,我将RPC公开为公共K8S服务,并将会话关联设置为ClientIP。当我的API网关访问K8S服务时,只有一个pod响应,因为会话是关联的,所以另外两个pod从未使用过