我目前正在通过and保护我的EKS
集群,所以我正在做一些测试以了解它们是如何工作的,我为 PoC 部署了如下结构:NetworkPolicies
Calico
Internet -> NLB -> Nginx Pod
Nginx pod 是使用deployment.yaml 部署的,只有 1 个副本。我还部署了一个 Kubernetes NodePort 服务,NLB 指向该服务。我添加了一个简单的 NetworkPolicy 来阻止所有流量,除了来自我的cidr
(Internet)的流量。这按预期工作。
但是,检查nginx logs
,IP
显示不是“真实的IP
”,它是一个节点(这是从一个节点重定向到正确节点的IP
预期行为),并检查标题,没有任何迹象或类似的迹象。kube-proxy
X-Forwarded-For
echo-server
为了查看完整的请求和标头,我部署了一个具有相同结构的。令我惊讶的是,它NetworkPolicy
不再起作用,我无法在本地 IPIP
上使用我的真实NetworkPolicy
IP。我必须允许节点cidr
才能工作。
来自官方Kubernetes
页面(NetworkPolicies: Behavior of to and from selectors)
集群入口和出口机制通常需要重写数据包的源 IP 或目标 IP。在发生这种情况的情况下,没有定义这是发生在 NetworkPolicy 处理之前还是之后,并且对于网络插件、云提供商、服务实现等的不同组合,行为可能会有所不同。
但是我不确定这是导致这种行为的原因,如果是这样:
- 是什么原因导致
NetworkPolicies
能够获得真实IP?难道不应该在到达服务之前采取行动吗? - 当服务存在但不与其他服务一起使用时,我如何能够使用真实源 IP 作为过滤器
Nginx
>(我也尝试NetworkPolicies
直接添加到Kibana
pod,但它不起作用)