0

我目前正在通过and保护我的EKS集群,所以我正在做一些测试以了解它们是如何工作的,我为 PoC 部署了如下结构:NetworkPoliciesCalico

Internet -> NLB -> Nginx Pod

Nginx pod 是使用deployment.yaml 部署的,只有 1 个副本。我还部署了一个 Kubernetes NodePort 服务,NLB 指向该服务。我添加了一个简单的 NetworkPolicy 来阻止所有流量,除了来自我的cidr(Internet)的流量。这按预期工作。

但是,检查nginx logsIP显示不是“真实的IP”,它是一个节点(这是从一个节点重定向到正确节点的IP预期行为),并检查标题,没有任何迹象或类似的迹象。kube-proxyX-Forwarded-For

echo-server为了查看完整的请求和标头,我部署了一个具有相同结构的。令我惊讶的是,它NetworkPolicy不再起作用,我无法在本地 IPIP上使用我的真实NetworkPolicyIP。我必须允许节点cidr才能工作。

来自官方Kubernetes页面(NetworkPolicies: Behavior of to and from selectors

集群入口和出口机制通常需要重写数据包的源 IP 或目标 IP。在发生这种情况的情况下,没有定义这是发生在 NetworkPolicy 处理之前还是之后,并且对于网络插件、云提供商、服务实现等的不同组合,行为可能会有所不同。

但是我不确定这是导致这种行为的原因,如果是这样:

  • 是什么原因导致NetworkPolicies能够获得真实IP?难道不应该在到达服务之前采取行动吗?
  • 当服务存在但不与其他服务一起使用时,我如何能够使用真实源 IP 作为过滤器Nginx>(我也尝试NetworkPolicies直接添加到Kibanapod,但它不起作用)
4

0 回答 0