本页面介绍如何通过配置专门适用于指定 Pod 网络的多网络网络政策,增强集群内的网络安全性和流量控制。这些多网络政策通过在 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 的所有连接,包括未应用这些政策的连接。
配置多网络网络政策
如需使用多网络政策,请执行以下操作:
- 创建启用了多网络的 GKE 的集群。
- 创建节点池和 Pod 网络。
- 引用 Pod 网络。
- 创建网络政策,以实施引用工作负载所使用的同一 Pod 网络的网络政策。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
命令以获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
创建网络政策
如需创建网络政策以在与工作负载相同的 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 地址的映射。
后续步骤
- 阅读多网络政策简介
- 阅读设置 Pod 的多网络支持