【问题标题】:Kubernetes network policy blocks traffic between nodes on AKSKubernetes网络策略阻止AKS上节点之间的流量
【发布时间】:2021-08-18 22:54:00
【问题描述】:

我正在使用 Azure Kubernetes 服务 (AKS),并希望确保特定命名空间内的 pod 只能接收来自同一命名空间中其他 pod 的入口流量。

我找到了这个网络策略来实现这个命名空间隔离(来自here):

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  namespace: my-namespace
  name: deny-from-other-namespaces
spec:
  podSelector:
    matchLabels:
  ingress:
  - from:
    - podSelector: {}

创建此网络策略后,它成功阻止了“my-namespace”上的 pod 与另一个命名空间之间的流量,而“my-namespace”中的 pod 之间的通信仍然是可能的。但是,仅当两个 pod 都安排在同一个节点上时,这才是正确的。如果两个 pod 都在“my-namespace”中但在不同的节点上运行,那么它们之间的连接将不再有效。一旦我删除了上述网络策略,连接就会再次起作用。 我认为这不是预期的行为,因为 pod 位于同一个命名空间中,因此应该允许入口流量。 有谁知道什么可能导致这个问题?

我正在使用 kubenet 和 calico 网络策略运行 Kubernetes 版本 1.19.6。

【问题讨论】:

    标签: kubernetes azure-aks kubernetes-networkpolicy kubernetes-networking


    【解决方案1】:

    您在 AKS 集群 v1.19+ 中遇到了一个围绕“Pod IP SNAT/伪装行为”的已知问题。

    其他用户在那里解释了它如何影响使用 Calico 的网络策略插件的集群:

    仅供其他用户参考,此问题会导致带有 podSelector 配置的 NetworkPolicy 出现问题。由于Calico会根据IPtables中Pod的ipset设置策略,但是数据包的源IP设置为节点IP,甚至应该允许的数据包也会被丢弃。

    请在 github 问题 #2031 中阅读有关此问题的更多信息,以及硬修复(节点映像升级)或解决方法(运行 Daemonset 在 iptables 中创建 SNAT 豁免)。

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 2021-04-02
      • 2022-01-23
      • 1970-01-01
      • 2021-02-02
      • 2020-11-21
      • 2021-03-09
      • 2021-12-02
      • 2021-01-17
      相关资源
      最近更新 更多