默认情况下,如果名称空间中没有配置 NetworkPolicy,则该名称空间中,所有Pod的所有入方向流量和所有出方向流量都是被允许的。本文列举了几个例子,可以用来改变名称空间中默认的网络策略

默认拒绝所有的入方向流量


在名称空间中创建下面的 NetworkPolicy,该 NetworkPolicy:

  • 选中所有的 Pod
  • 不允许任何入方向的流量 ```yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny spec: podSelector: {} policyTypes:
    • Ingress
  1. NetworkPolicy 将确保名称空间中所有的入方向流量都被限制,同时,不改变出方向的流量。
  2. <a name="EfOw1"></a>
  3. ## 默认允许所有的入方向流量
  4. ---
  5. 在名称空间中创建下面的 NetworkPolicy,该 NetworkPolicy 允许名称空间中所有 Pod 的所有入方向网络流量
  6. ```yaml
  7. apiVersion: networking.k8s.io/v1
  8. kind: NetworkPolicy
  9. metadata:
  10. name: allow-all
  11. spec:
  12. podSelector: {}
  13. ingress:
  14. - {}
  15. policyTypes:
  16. - Ingress

默认允许所有出方向流量


在名称空间中创建下面的 NetworkPolicy,该 NetworkPolicy 允许名称空间中所有 Pod 的所有出方向网络流量

  1. apiVersion: networking.k8s.io/v1
  2. kind: NetworkPolicy
  3. metadata:
  4. name: allow-all
  5. spec:
  6. podSelector: {}
  7. egress:
  8. - {}
  9. policyTypes:
  10. - Egress

默认拒绝所有入方向和出方向的网络流量


在名称空间中创建下面的 NetworkPolicy,该 NetworkPolicy 禁止名称空间中所有 Pod 的所有入方向流量和所有出方向流量

  1. apiVersion: networking.k8s.io/v1
  2. kind: NetworkPolicy
  3. metadata:
  4. name: default-deny
  5. spec:
  6. podSelector: {}
  7. policyTypes:
  8. - Ingress
  9. - Egress

SCTP 支持


FEATURE STATE: Kubernetes v1.12 alpha

在 Kubernetes 中启用 SCTPSupport 特性,可以在 NetworkPolicy 的 protocal 字段中使用 SCTP 这个选项,该特性为 alpha 状态。向 apiserver 的启动参数中添加 —feature-gates=SCTPSupport=true,… 可以激活该特性。

使用此特性时,您所用的网络插件需要支持 SCTP,请查询网络插件相关的文档。