gpt4 book ai didi

kubernetes - 在带有 ClusterIP 服务和 kube-keepalive-vip 的裸机 Kubernetes 上使用 Traefik 2 没有 X-Forwarded-For

转载 作者:行者123 更新时间:2023-12-04 15:14:34 25 4
gpt4 key购买 nike

我的设置是一个运行 Kubernetes 1.17 的裸机集群。我使用 Traefik 2(.3.2) 作为反向代理并为我使用的机器进行故障转移 kube-keepalive-vip [1]。

---
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-keepalived-vip-config
namespace: kube-system
data:
172.111.222.33: kube-system/traefik2-ingress-controller
因此,我的 traefik 服务是默认类型的集群 IP,并引用了 kube-keepalive-vip 提供的外部 IP。服务:
---
apiVersion: v1
kind: Service
metadata:
name: traefik2-ingress-controller
namespace: kube-system
spec:
selector:
app: traefik2-ingress-controller
ports:
- protocol: TCP
name: web
port: 80
- protocol: TCP
name: webs
port: 443
externalIPs:
- 172.111.222.33
这按原样工作。现在我想限制我的一些应用程序只能从我网络内的特定子网访问。由于我的请求由 kube-keepalive-vip 处理还有 kube-proxy ,我请求中的客户端 IP 不再是实际客户端之一。但据我所知,文档 kube-proxy正在 X-Forwarded-For中设置真实ip标题。所以我的中间件看起来像这样:
internal-ip-whitelist:
ipWhiteList:
sourceRange:
- 10.0.0.0/8 # my subnet
- 60.120.180.240 # my public ip
ipStrategy:
depth: 2 # take second entry from X-Forwarded-For header
现在,对这个中间件所附加的入口的每个请求都被拒绝了。我检查了 Traefik 日志,发现请求包含一些 X-Forwarded-*标题,但没有 X-Forwarded-For :(
有没有人有这方面的经验,可以指出我的错误吗?我的 Kubernetes 设置可能有问题吗?或者我的 kube-keepalive-vip 中是否缺少某些东西配置?
提前致谢!
[1] https://github.com/aledbf/kube-keepalived-vip

最佳答案

对于遇到此问题的每个人,我同时设法解决了我的问题。
主要问题是kube-proxy .默认情况下,所有服务都通过它路由。并且,根据您的 CNI 提供商(我使用 flannel),您的调用客户端的信息会在那里丢失。
K8s 通过设置 .spec.externalTrafficPolicy 提供了一种解决方法。至 Local ( https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support )。但ClusterIP 不支持此功能服务。
所以我通过使用为裸机集群提供负载平衡的 MetalLB ( https://metallb.universe.tf/ ) 解决了这个问题。使用之前分配给keepalived容器的虚拟IP进行设置后,我将traefik服务配置为类型LoadBalancer并请求我在 MetalLB 中拥有的一个 IP。

关于kubernetes - 在带有 ClusterIP 服务和 kube-keepalive-vip 的裸机 Kubernetes 上使用 Traefik 2 没有 X-Forwarded-For,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64559981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com