我已经安装了kubernetes 1.2.0,配置如下
export nodes="user@10.0.0.30 user@10.0.0.32"
export role="ai i"
export NUM_NODES=2
export SERVICE_CLUSTER_IP_RANGE=192.168.3.0/24
export FLANNEL_NET=172.16.0.0/16
export KUBE_PROXY_EXTRA_OPTS="--proxy-mode=iptables"我已经创建了一个nginx pod,并使用负载均衡器和外部IP地址进行了暴露
kubectl expose pod my-nginx-3800858182-6qhap --external-ip=10.0.0.50 --port=80 --target-port=80我在裸机上使用kubernetes,因此我为主节点分配了10.0.0.50IP。
如果我尝试curl 10.0.0.50 (从kubernetes外部)并在nginx pod上使用tcpdump,我看到流量,源ip始终来自kubernetes主节点
17:30:55.470230 IP 172.16.60.1.43030 > 172.16.60.2.80: ...
17:30:55.470343 IP 172.16.60.2.80 > 172.16.60.1.43030: ...我使用mode-proxy=iptables。并且需要获取实际的源ip。我做错了什么?
发布于 2017-06-23 09:47:58
这是在Kubernetes1.5(文档here)中作为注释添加的。
在1.7中,它已经升级到GA,因此您可以使用spec.externalTrafficPolicy字段(文档here)指定服务的负载平衡策略:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "example-service",
},
"spec": {
"ports": [{
"port": 8765,
"targetPort": 9376
}],
"selector": {
"app": "example"
},
"type": "LoadBalancer",
"externalTrafficPolicy": "Local"
}
}发布于 2016-05-03 02:06:01
不幸的是,你没有做错任何事。它是如何将数据包从接收它们的机器代理到目的地容器的工件。
围绕very long Github issue中的这个问题已经有了很多讨论,但是除了在Kubernetes集群之外运行前端负载均衡器之外,还没有找到解决方案(比如使用负载均衡器,它附加了X-FORWARDED-FOR头部)。
https://stackoverflow.com/questions/36988369
复制相似问题