kubernetes - 访问Kubernetes负载均衡服务背后的客户端IP地址

标签 kubernetes openshift

如果我在OpenShift中具有LoadBalancer服务,是否有人知道是否以及如何访问最初执行该请求的客户端的原始IP地址?它被负载均衡器的IP地址覆盖。

应该有一种访问该信息的方法-可能在可选的TCP数据中。有人知道吗?

或者,也许我可以使用其他方法来转发程序包,而不会丢失该信息,但仍然能够将服务扩展到多个Pod。谢谢您的提示!

最好的问候,多米尼克

OpenShift主站:v3.9.41
Kubernetes Master:v1.9.1

最佳答案

从K8s 1.5起,IP地址默认是Kubernetes服务中的源NAT,因此您将看不到源IP。对于LoadBalancer服务类型,您可以在其规范中设置 externalTrafficPolicy field to Local 以保留源IP地址:

$ kubectl patch svc yourservice -p '{"spec":{"externalTrafficPolicy":"Local"}}'

它应该算出GCE和Azure cloud providers的框。对于其他用户,请遵循“跨平台支持”部分here

引用自文档:

As of Kubernetes 1.5, support for source IP preservation through Services with Type=LoadBalancer is only implemented in a subset of cloudproviders (GCP and Azure).



请注意,当您将externalTrafficPolicy字段设置为Local时,只有运行pod的节点才会显示为正常,因为它们是对您的服务的答复。

OpenShift使用相同的Kubernetes服务语法。

关于kubernetes - 访问Kubernetes负载均衡服务背后的客户端IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53072947/

相关文章:

kubernetes - Kubernetes 的连接服务是什么?

java - 在 OpenShift 平台中使用 MySql 的 Spring Webapp

java - OpenShift Gradle 失败并出现 java.net.BindException : Permission denied

tomcat - 在 DIY OpenShift 应用程序上设置 Tomcat 以与 Java8 一起使用

openshift - 在 Kubernetes/OpenShift 中的容器之间共享持久卷声明

tomcat - OpenShift 专业版 : Binary Deployment With Changed Version Of Tomcat Configuration

docker - 如何在 Rancher 中修复 "Cluster must have at least one etcd plane host: failed to connect to the following etcd host(s) [10.xxx.xxx.36]"?

elasticsearch - Kubernetes Persistent Volume在GCE上不起作用

azure - RouteController 无法在 acs-engine 中创建路由

kubernetes - 无法列出除已完成状态之外的任何状态的 Pod