通过 Nodeport 的方式暴漏服务 A。
5000 端口不在 Nodeport 默认端口范围内(30000-32767)。 修改 Nodeport 的端口范围,需要修改 kube-apiserver 配置,行不通。
服务 A 的 Pod 配置hostNetwork: true
。
服务 A 内部还有其他进程,监听了端口,容易和节点的其他进程冲突。同时还会暴漏服务 A 内部的其他服务。
新增一个 nginx Pod,并配置hostNetwork: true,dnsPolicy: ClusterFirstWithHostNet
,通过七层代理来转发流量到服务 A 的 service。
服务 B 调用服务 A 时,原本是使用服务 A 的 ssl 证书。但是在七层代理下,会使用这个 nginx 的证书。而证书是服务 A 生成的,不太好自动配置给 nginx。
新增一个 nginx Pod,并配置hostNetwork: true,dnsPolicy: ClusterFirstWithHostNet
,通过四层代理来转发流量到服务 A 的 service。nginx 启用 proxy protocol
,用来传递真实的客户端 IP。
proxy protocol 需要后端应用支持,nginx、apache 这些都是支持了的,此方案可行。
新增一个 ubuntu Pod,并配置hostNetwork: true
,通过 iptables
来转发流量。
针对方案四中,后端应用不支持 proxy protocol 协议的情况,可以用这个方案。实现较为复杂。