【问题标题】:How can I get the real ip address of a client when using Traefik on k3s?在 k3s 上使用 Traefik 时如何获取客户端的真实 IP 地址?
【发布时间】:2021-06-16 19:19:44
【问题描述】:

我浏览了许多博客文章和 SO 问题以及 k3s 文档,但仍然无法获得客户端的真实 IP 地址,而不是内部集群 IP 地址。

我使用 Traefik 1.8 安装了标准的 k3s。如几个 github 问题所示,我已将所有服务设置为使用 Clusterip,并为我的 Traefik 和 apache 服务设置 externalTrafficPolicy: Local:https://github.com/k3s-io/k3s/issues/1652

奇怪的是,Traefik 似乎传递了任何像 x-forwarded-for 这样的标头,因为如果我手动将带有我的 IP 地址的 x-forwarded-for 添加到我的浏览器请求中,则 apache 日志中的结果有我的 ip 以及内部集群 ip 用逗号分隔。

当流量进入应该注入 IP 地址的集群时,是否有什么东西在 Traefik 实例之前被命中?

【问题讨论】:

    标签: traefik traefik-ingress k3s


    【解决方案1】:

    看来有很多事情会导致这个问题。就我而言,这是更常见的问题之一。我只需要修补 k3s traefik 清单即可拥有 hostNetwork: true。

    kubectl patch deployment traefik --patch '{"spec":{"template":{"spec":{"hostNetwork":true}}}}'
    

    需要注意的是不建议手动修改这个manifest,因为它是由helm管理的。因此,如果 helm 进程再次运行或重新安装或更新 k3s,它将恢复,您将不得不再次运行此补丁。您必须为 traefik 修改 k3s helm 图表或实施您自己的图表来代替 k3s 以使此更改生效。

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2011-09-02
      • 1970-01-01
      • 2021-07-05
      • 2012-08-04
      • 2012-03-14
      相关资源
      最近更新 更多