首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes不保留源ip

Kubernetes不保留源ip
EN

Stack Overflow用户
提问于 2016-05-03 01:41:27
回答 2查看 3.8K关注 0票数 1

我已经安装了kubernetes 1.2.0,配置如下

代码语言:javascript
复制
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地址进行了暴露

代码语言:javascript
复制
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主节点

代码语言:javascript
复制
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。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2017-06-23 09:47:58

这是在Kubernetes1.5(文档here)中作为注释添加的。

在1.7中,它已经升级到GA,因此您可以使用spec.externalTrafficPolicy字段(文档here)指定服务的负载平衡策略:

代码语言:javascript
复制
{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "example-service",
  },
  "spec": {
    "ports": [{
      "port": 8765,
      "targetPort": 9376
    }],
    "selector": {
      "app": "example"
    },
    "type": "LoadBalancer",
    "externalTrafficPolicy": "Local"
  }
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-03 02:06:01

不幸的是,你没有做错任何事。它是如何将数据包从接收它们的机器代理到目的地容器的工件。

围绕very long Github issue中的这个问题已经有了很多讨论,但是除了在Kubernetes集群之外运行前端负载均衡器之外,还没有找到解决方案(比如使用负载均衡器,它附加了X-FORWARDED-FOR头部)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36988369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档