推荐答案
-- -------------------- ---- ------- ----------- -------------------- ----- ------------- --------- ----- ---------------------- ---------- ------- ----- ------------ ------------ ----- -- ------------ - ------- - ------ -------- - ----- - ------------ ------------ ----- -------- ------ - --------- --- ----- ---- ------- - --- - -------- ----- ----------- ------ - --------- --- ----- ----
本题详细解读
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
: 同时应用Ingress
和Egress
策略。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 后,只有符合规则的流量才会被允许,其他流量将被拒绝。