我想获取客户端在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。