本页面介绍如何通过配置专门适用于指定 Pod 网络的多网络政策,在 Pod 级别控制 Pod 和 Service 之间的流量。
作为集群管理员,您可以配置多网络网络政策,使用防火墙规则在 Pod 级别控制 Pod 和 Service 之间的流量。您可以增强集群中的网络安全性和流量控制。
如需了解多网络网络政策的工作原理,请参阅网络政策如何与 Pod 网络配合使用。
要求
如需使用多网络网络政策,请考虑以下要求:
- Google Cloud CLI 459 版及更高版本。
- 您必须有一个运行以下版本的 GKE 集群:
- 1.28.5-gke.1293000 或更高版本
- 1.29.0-gke.1484000 或更高版本
- 您的集群必须使用 GKE Dataplane V2。
限制
不支持 FQDN 网络政策和 CiliumClusterWide 网络政策:如果您在连接到多个网络的 Pod 上使用 FQDN 网络政策和 CiliumClusterWide 网络政策,则该政策会影响所有 Pod 的连接,而不仅仅是应用了这些政策的 Pod 连接。
价格
只有启用了 GKE Enterprise 的项目中的集群支持以下 Network Function Optimizer (NFO) 功能:
- 对 Pod 的多网络支持
- 对 Pod 的永久性 IP 地址支持(预览版)
- 多网络网络政策(预览版)
- 对 Pod 的服务流量导向支持(预览版)
如需了解启用 Google Kubernetes Engine (GKE) Enterprise 版本的相关费用,请参阅 GKE Enterprise 价格。
配置多网络网络政策
如需使用多网络网络政策,请执行以下操作:
- 创建启用了多网络的 GKE 的集群。
- 创建节点池和 Pod 网络。
- 引用 Pod 网络。
- 创建网络政策,以实施引用工作负载所使用的同一 Pod 网络的网络政策。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
创建网络政策
如需创建在与工作负载相同的 Pod 网络上强制执行规则的网络政策,请在网络政策定义中引用特定的 Pod 网络。
如需定义选定的入站流量规则并根据标签或其他选择器定位 Pod,请创建标准网络政策。
将以下示例清单保存为
sample-ingress-network-policy1.yaml
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: sample-network-policy namespace: default annotations: networking.gke.io/network: blue-pod-network # GKE-specific annotation for network selection spec: podSelector: matchLabels: app: test-app-2 # Selects pods with the label "app: test-app-2" policyTypes: - Ingress # Specifies the policy applies only to incoming traffic ingress: - from: # Allow incoming traffic only from... - podSelector: matchLabels: app: test-app-1 # ...pods with the label "app: test-app-1"
应用
sample-ingress-network-policy1.yaml
清单:kubectl apply -f sample-ingress-network-policy1.yaml
如需定义选定的出站流量规则并根据标签或其他选择器定位 Pod,请创建标准网络政策。
将以下示例清单保存为
sample-egress-network-policy2.yaml
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: sample-network-policy-2 namespace: default annotations: networking.gke.io/network: blue-pod-network # GKE-specific annotation (optional) spec: podSelector: matchLabels: app: test-app-2 policyTypes: - Egress # Only applies to outgoing traffic egress: - to: - podSelector: matchLabels: app: test-app-3
应用
sample-egress-network-policy2.yaml
清单:kubectl apply -f sample-egress-network-policy2.yaml
排查多网络网络政策问题
如果您遇到网络政策问题,无论它们是否应用于特定的 Pod 网络,都可以通过运行以下命令来诊断和排查问题:
kubectl get networkpolicy
:列出所有网络政策对象及其相关信息。iptables-save
:检索并列出特定节点的所有 IP 地址表链。您必须以 root 身份在该节点上运行此命令。cilium bpf policy get <endpoint-id>
:从每个端点的政策映射中检索并列出允许的 IP 地址。cilium policy selectors
:输出身份以及已选择这些身份的关联政策。cilium identity list
:显示从身份到 IP 地址的映射。