【问题标题】:Project Calico: Priority between "global policy" and "network policy"Project Calico:“全球政策”和“网络政策”之间的优先级
【发布时间】:2021-06-26 01:04:17
【问题描述】:

我正在一个小型 Kubernetes 集群上测试 Project Calico,我试图找出“全局策略”和“网络策略”之间的哪一个将首先应用于数据流。

我的理解:

  • Calico 的数据路径是 pod 的主机总是下一跳,然后用 iptables 过滤
  • 策略(网络和全局)可以有优先级(较低的优先级将在前面应用)

我做了很多测试,但有时全局网络策略优先于网络策略,有时恰恰相反。

你能解释一下并告诉我我是否在某个地方错了吗?

谢谢!

【问题讨论】:

    标签: kubernetes project-calico


    【解决方案1】:

    全局与非全局不是决定应用策略顺序的因素。排序由 Calico NetworkPolicy 和 GlobalNetworkPolicy 资源上的“顺序”字段确定,应用较小的“顺序”策略首先。

    如果未指定,“order”默认为无穷大,因此未指定“order”的策略将最后应用。

    Calico 还实现了 Kubernetes NetworkPolicy 资源,它没有明确的“订单”字段。为了对 Calico 资源排序,我们将 Kubernetes NetworkPolicy 资源视为它们具有 1000 的隐式“顺序”。

    对于具有相同 order 值的策略,代码中有一个决胜局,但您不需要知道它是什么或依赖它,因为最好使用明确的“order”值,无论何时订购很重要。

    【讨论】:

      【解决方案2】:

      如果您有准确的配置示例以及预期和实际结果,那就太好了。涉及大量设置的非常广泛的主题。

      一般来说,Calico Network policy 是与命名空间相关的资源,而Calico Global network policy 则不是。


      Calico Network policy:

      一个网络策略资源(NetworkPolicy)表示一个有序的集合 应用于与 a 匹配的端点集合的规则 标签选择器。

      NetworkPolicy 是一个命名空间资源。特定的 NetworkPolicy 命名空间仅适用于其中的工作负载端点资源 命名空间。如果命名空间,则两个资源在同一个命名空间中 两者的值设置相同。

      Calico Global network policy

      GlobalNetworkPolicy 不是命名空间资源。全球网络政策 适用于所有命名空间中的工作负载端点资源,并适用于主机 端点资源。在 GlobalNetworkPolicy 中选择一个命名空间 使用 projectcalico.org/namespace 作为标签的标准选择器 名称和名称空间名称作为要比较的值,例如, projectcalico.org/namespace == “默认”。

      Calico 全局网络策略适用于所有命名空间中的所有工作负载(VM 和容器),以及主机(运行虚拟机管理程序的计算机,或容器运行时的容器)。

      优先级来自Selectors,这是一种非常强大的资源管理和排序方式。很可能您在测试不同的选项时遇到了问题。看,就像这里:globalnetworkpolicy with networkpolicy not allowing expected traffic 。检查您的标签、选择器以及与此相关的所有内容。

      还有作用域。那里的问题可能很容易:


      还可以查看官方示例Enable default deny for Kubernetes pods - 开始了解政策的好点,有很多好的建议如何以最佳方式管理它。而且他们还同时使用两种策略(全局/正常)。

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 2020-04-13
        • 1970-01-01
        • 2021-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-15
        相关资源
        最近更新 更多