kubernetes - GCP:Kubernetes 集群前虚拟机上的反向代理

标签 kubernetes gcp

我们运行一个托管数据库、各种微服务和 nginx 的 Kubernetes 集群。反向代理,全部在容器中。我们有一个谷歌 load balancer以及转发到反向代理的转发规则,并从那里将请求代理到适当的微服务。

这很好用,但是反向代理永远不会显示连接到它的客户端的 IP 地址。 (尽管 this documentation 表明可以通过 HTTP header 获取此信息,但我们运气不佳,只能在 GCP default 网络上看到 IP。)

根据另一个 SO question 中的建议 - 我暂时放错了链接 - 我想部署 nginx而是在 VM 实例上,它确实可以访问连接客户端的 IP,然后将来自该实例的请求转发到集群中。

那么我的问题是:每个微服务都监听一个 TCP 端口并且有一个 k8s Service配置。如何引用这些k8s Service来自我的nginx虚拟机?我可以通过 DNS 或入口 Controller 来实现吗?

或者,如果您实际上可以确定 Google 负载均衡器背后的外部 IP 地址,我宁愿这样做。我记得读过一篇很长的关于它的 k8s GitHub 问题,表明那还有一段路要走。

最佳答案

您要查找的内容称为 http proxy protocol
https://www.nginx.com/resources/admin-guide/proxy-protocol/

请注意,必须将 google 负载均衡器和您的 nginx 配置为同时使用代理协议(protocol)。
如果其中一个正在使用代理协议(protocol),而另一个不使用,则不会有任何效果。

关于kubernetes - GCP:Kubernetes 集群前虚拟机上的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47038275/

相关文章:

dns - 将域与公司域空间和 Kubernetes 域空间分开?

gcp - 如何将本地日志与 GCP 堆栈驱动程序集成

amazon-web-services - 如何获取 EKS 集群的 URL?

kubernetes - 在 Helm 3 中, "install --dry-run"、 "template --validate"和 "lint"到底在做什么?

kubernetes - 如何使用 Google Compute Engine Instances 设置 Tensorflow 集群来训练模型?

google-cloud-platform - Google Cloud Storage : Is there a limit on the number of projects, 存储桶,可以创建服务帐户吗?

kubernetes - 向谷歌容器引擎编写启动脚本

google-cloud-platform - Google GPU Beta是否可以免费试用?

kubernetes - kube-apiserver 编辑/etc/kubernetes/manifests/kube-apiserver.yaml 后如何重启

kubernetes - kubernetes.default.svc是怎么路由到api服务器的?