Kubernetes:获取传入数据包的真实客户端源IP

时间:2016-01-13 12:10:09

标签: iptables kubernetes coreos

我想获取客户端在kubernetes pod中的应用程序中发送数据包的实际IP。

我做了一些搜索,并且found之前没有支持,但稍后会支持。

我没有对我的设置进行评分,这是当前的安装版本:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}

$ kubectl api-versions
extensions/v1beta1
v1

我也跑了:

$ for node in $(kubectl get nodes -o name); do kubectl annotate $node net.beta.kubernetes.io/proxy-mode=iptables; done

现在给出:

  

错误: - overwrite为false但发现以下声明   注释:' net.beta.kubernetes.io/proxy-mode'已经有了价值   (iptables的)

     

错误: - overwrite为false但发现以下声明   注释:' net.beta.kubernetes.io/proxy-mode'已经有了价值   (iptables的)

我也重启了所有的盒子。

但是,当我的应用程序内部收到数据包时,仍然会获得工作节点的docker0接口的IP。

Here,我读到了:

  

但这不会暴露外部客户端IP,只会暴露内部群集IP。

所以,问题是当我收到数据包时如何获得真实的外部客户端IP。

数据包不是http / websocket数据包,而是普通TCP数据包(如果这与获得答案相关)。

我也尝试过这个comment,但没有幸运。应用程序继续获取docker0接口IP作为源IP的数据包。可能是我无法复制粘贴的东西。我不知道如何获得kube-proxy IP并在那里使用工作机IP。我刚刚开始使用Kubernetes和CoreOS。

0 个答案:

没有答案