NGINX入口pod日志显示工作节点ip为原点



我有一个网络策略,只允许从我的IP地址连接到NGINX入口控制器。网络策略如下。入口使用负载均衡器,应用程序在不同的命名空间(默认)。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ingress-access
namespace: ingress-nginx
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/component: controller
app.kubernetes.io/instance: nginx-ingress
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 11.11.11.11/32
ports:
- protocol: TCP
port: http
- protocol: TCP
port: https

但是在部署网络策略后,我无法建立到我的应用程序的连接。因此,我将CIDR范围从11.11.11.11/32更改为0.0.0.0/0,并检查日志以查看我从哪个IP地址接收连接。

22.22.22.22——[11月10//2022:05:14:35 + 0000]"GET/HTTP/1.1";200 7250 "-"Mozilla/5.0(麦金塔电脑;英特尔Mac OS X 10_15_7AppleWebKit/537.36 (KHTML,如Gecko) Chrome/107.0.0.0 Safari/537.36"462 0.006 [default-hello-one-80] [] 10.2.0.6:80 7243 0.004 2004 d3fd980e5d07a084b162c1f9305f2d9

这意味着我被我的kubernetes工作节点之一击中。(22.22.22.22)

我尝试在ipBlock下添加所有工作节点IP地址和负载均衡器IP地址,但我的应用程序仍然无法访问。有人能帮帮我吗?

需要在Ingress controller服务上设置externalTrafficPolicy: Local

文档在这里

设置这个允许原始客户端IP(它将在集群之外)被保留,所以像允许/拒绝列表和网络策略之类的东西将正常工作。

最新更新