CKA [Installation] – NetworkPolicy的exept, port 和portocol的使用

🧩 一、except

exceptipBlock 字段中的一个子字段,用于从指定的 IP 范围中排除部分子网或 IP

📘 举例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example-except
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 192.168.0.0/16
        except:
        - 192.168.1.0/24

👉 这个规则的意思是:

允许来自 192.168.0.0/16 网段的流量访问,但 不允许来自 192.168.1.0/24 的访问。

⚠️ 注意:
ipBlock 只适用于 外部流量(cluster 外部 IP),不能匹配 Pod 的 ClusterIP(因为那是动态分配的)。

🧩二、ports

ports 用于限制 NetworkPolicy 允许的 端口号
你可以在 ingressegress 中定义它。

📘 举例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: web-allow
spec:
  podSelector:
    matchLabels:
      app: web
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 80

👉 意思是:

允许带 role=frontend 的 Pod 访问 app=web 的 Pod,只能访问 TCP 80 端口。

如果访问 TCP 443 或 UDP 53,就会被拒绝。

🧩 三、protocol

protocol 指定传输层协议,默认值是 TCP

✅ 可选值:

  • TCP
  • UDP
  • SCTP(少用)

📘 举例:

ports:
  - protocol: UDP
    port: 53

👉 表示允许 UDP 协议的 53 端口(通常是 DNS 流量)。

如果没有写 protocol,Kubernetes 默认使用 TCP

Loading

Facebook评论