Kubernetes 网络策略(NetworkPolicy)提供基于策略的网络控制。您可以通过 NetworkPolicy 从 IP 地址或网络端口层面控制 Pod 级别的网络流量。本文介绍 NetworkPolicy 和配置方法和使用场景。
说明
说明
【邀测·申请试用】:vpc-cni 组件的 v1.6.4 及以上版本目前也处于 邀测 阶段,请一并提交申请。
限制项 | 最大支持规模 |
---|---|
Pod 数量 | 10000 |
Workload 数量 | 10000 |
说明
开启(或关闭)NetworkPolicy 功能后,需要近 1 分钟时间生效。
参数 | 描述 |
---|---|
类型 | 在下拉菜单中选择类型,本文中选择 NetworkPolicy。 |
Yaml | 参考本文下方 配置示例,输入 YAML 内容。 |
下文列出使用集群 NetworkPolicy 能力时,常见的几种配置示例:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-1 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: ingress: - from: - podSelector: {} podSelector: {} policyTypes: - Ingress
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-2 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: podSelector: {} policyTypes: - Ingress
name: demo-namespace
的命名空间下的 Pod,通过 TCP 协议的 6379 端口访问。apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-3 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: ingress: - from: - namespaceSelector: # 命名空间选择器。 matchLabels: # 命名空间标签匹配。 name: demo-namespace ports: # 指定端口。 - protocol: TCP # 端口协议。 port: 6379 # 端口号。 podSelector: {} policyTypes: - Ingress
172.16.0.0/16
、协议为 TCP、端口号为 8080 的网络端口,不能访问其他网络端口。apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-4 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: egress: - to: - ipBlock: cidr: 172.16.0.0/16 # Pod CIDR。 ports: # 指定端口。 - protocol: TCP # 端口协议。 port: 8080 # 端口号。 podSelector: {} policyTypes: - Egress
172.16.0.0/16
的网络端口访问,不能被其他任何网络端口访问。apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-5 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: ingress: - from: - ipBlock: cidr: 172.16.0.0/16 # Pod CIDR。 ports: # 指定端口。 - protocol: TCP # 端口协议。 port: 80 # 端口号。 podSelector: {} policyTypes: - Ingress
app: tesyallowall
标签的命名空间下的 Pod。apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: demo-6 # NetworkPolicy 资源名称。 namespace: default # Pod 所属命名空间。 spec: egress: - to: - namespaceSelector: # 命名空间标签匹配。 matchLabels: app: testallowall podSelector: {} policyTypes: - Egress