我使用RPC协议应用程序作为微服务 以及作为代理的API网关。
现在我想使用k8s部署微服务,API网关不在k8s集群中,RPC微服务由k8s部署,我的集群中有三个副本RPC微服务。
我的问题是如何直接访问k8s的pod,因为我必须构建一个连接池来保存这些连接,例如,我有三个RPC微服务pod。
这是我的架构 architecture image
答案 0 :(得分:1)
您不应直接从pod中使用RPC微服务,而应通过Kubernetes服务。
首先,您必须将您的RPC公开为公共K8S服务,它将为您提供正在侦听的端口。使用集群的IP(当然可以多于一个)和该端口,您将能够使用RPC微服务。
检查文档以了解如何公开它:
https://kubernetes.io/docs/concepts/services-networking/service/
您可以使用hostNetwork
配置参数直接访问容器。但是,Kubernetes不推荐它:https://kubernetes.io/docs/concepts/configuration/overview/
如果您需要在副本之间保留共享会话或类似内容,我会使用其他外部组件,如Redis或类似的东西。