如何创建 Network Policy?

推荐答案

-- -------------------- ---- -------
----------- --------------------
----- -------------
---------
  ----- ----------------------
  ---------- -------
-----
  ------------
    ------------
      ----- --
  ------------
  - -------
  - ------
  --------
  - -----
    - ------------
        ------------
          ----- --------
    ------
    - --------- ---
      ----- ----
  -------
  - ---
    - --------
        ----- -----------
    ------
    - --------- ---
      ----- ----

本题详细解读

1. 什么是 Network Policy?

Network Policy 是 Kubernetes 中用于定义 Pod 之间网络通信规则的一种资源。它允许你控制哪些 Pod 可以与其他 Pod 通信,以及允许哪些端口和协议进行通信。

2. Network Policy 的核心字段

  • podSelector: 用于选择应用该 Network Policy 的 Pod。通过 matchLabels 字段指定标签选择器。
  • policyTypes: 定义策略类型,可以是 Ingress(入站流量)、Egress(出站流量)或两者都有。
  • ingress: 定义允许的入站流量规则。可以指定来源 Pod 的标签选择器(podSelector)或 IP 块(ipBlock),以及允许的端口和协议。
  • egress: 定义允许的出站流量规则。可以指定目标 IP 块(ipBlock)或 Pod 的标签选择器(podSelector),以及允许的端口和协议。

3. 示例解析

  • podSelector: 选择标签为 role: db 的 Pod。
  • policyTypes: 同时应用 IngressEgress 策略。
  • ingress: 允许来自标签为 role: frontend 的 Pod 的流量,且仅允许 TCP 协议的 6379 端口。
  • egress: 允许流向 10.0.0.0/24 IP 段的流量,且仅允许 TCP 协议的 5978 端口。

4. 注意事项

  • Network Policy 需要网络插件支持,如 Calico、Cilium 等。
  • 如果没有 Network Policy,默认情况下所有 Pod 之间可以自由通信。
  • 创建 Network Policy 后,只有符合规则的流量才会被允许,其他流量将被拒绝。
纠错
反馈