WEBKT

深入解析K8s Network Policy的spec字段:podSelector、policyTypes、ingress与egress的配置与应用

74 0 0 0

1. podSelector:选择目标Pod

2. policyTypes:定义策略类型

3. ingress:控制入站流量

4. egress:控制出站流量

字段之间的关系与优先级

总结

在Kubernetes(K8s)中,Network Policy 是用于定义Pod之间网络通信规则的重要工具。它通过spec字段中的多个子字段来精确控制流量的进出,确保集群内的网络安全性。本文将详细解析spec字段中的podSelectorpolicyTypesingressegress的用法,并通过配置示例帮助初学者和管理员更好地理解和应用Network Policy。

1. podSelector:选择目标Pod

podSelector是Network Policy的核心字段之一,用于指定该策略作用于哪些Pod。它通过标签选择器(Label Selector)来筛选目标Pod。例如:

podSelector:
matchLabels:
app: web

上述配置表示该Network Policy将作用于所有标签为app=web的Pod。如果没有指定podSelector,则默认作用于当前命名空间下的所有Pod。

2. policyTypes:定义策略类型

policyTypes字段用于指定Network Policy的类型,包括Ingress(入站流量)和Egress(出站流量)。默认情况下,如果未显式定义policyTypes,K8s会根据ingressegress字段的存在自动推断。例如:

policyTypes:
- Ingress
- Egress

此配置表示该策略同时控制入站和出站流量。

3. ingress:控制入站流量

ingress字段用于定义允许哪些流量进入目标Pod。它通常包含fromports两个子字段:

  • from:指定允许流量的来源,可以是Pod、命名空间或IP地址块。
  • ports:指定允许的端口号。
    示例配置如下:
ingress:
- from:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 3306

此配置表示只允许标签为app=database的Pod通过TCP协议的3306端口访问目标Pod。

4. egress:控制出站流量

egress字段用于定义目标Pod可以访问哪些外部资源。它与ingress字段类似,包含toports两个子字段:

  • to:指定允许访问的目标,可以是Pod、命名空间或IP地址块。
  • ports:指定允许的端口号。
    示例配置如下:
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 80

此配置表示目标Pod可以访问IP地址范围为10.0.0.0/24的网络,并且只能通过TCP协议的80端口进行通信。

字段之间的关系与优先级

  1. podSelector优先podSelector决定了策略的作用范围,其他字段(如ingressegress)都是基于此范围进行配置。
  2. policyTypes决定策略类型policyTypes字段明确了策略是控制入站、出站还是两者兼具。
  3. ingressegress细化规则:这两个字段进一步细化流量控制规则,确保只有符合条件的数据包可以通过。

总结

通过合理配置spec字段中的podSelectorpolicyTypesingressegress,您可以实现精确的网络流量控制,提升Kubernetes集群的安全性。希望本文的解析和示例能帮助您更好地理解和应用Network Policy。

TechGeek KubernetesNetwork Policyk8s网络配置

评论点评

打赏赞助
sponsor

感谢您的支持让我们更好的前行

分享

QRcode

https://www.webkt.com/article/8172