Google Distributed Cloud (GDC) 网闸隔离配置支持标准集群,这是一种由应用运维人员群组管理的单项目自助式 Kubernetes 集群,可为自定义工作负载提供更大的灵活性。本页介绍了如何为标准集群设置 Cloud NAT,并描述了此类集群的 NAT 配置的一些限制。
准备工作
在设置网关之前,您必须获得适当的 Identity and Access Management (IAM) 权限,确保您的项目具有适当的网络政策,并启用出站流量。
如需了解详情,请参阅开始使用 Cloud NAT 之前。
Cloud NAT 网关使用外部 leaf 子网作为输入。如需详细了解如何为 Cloud NAT 配置外部子网,请参阅为 Cloud NAT 创建外部子网。
概览

Cloud NAT 网关可通过以下两种方式配置,以处理在标准集群上运行的工作负载的出站流量:
- 项目级网关:适用于项目内集群上的所有工作负载流量的网关,包括所有共享集群和标准集群。这是创建 Cloud NAT 网关中所述的配置。
- 集群级网关:仅适用于单个指定标准集群中的工作负载的网关。这是本页中演示的网关类型。
这两种方法仅适用于工作负载,不适用于构成标准集群的节点。如需为构成标准集群的节点启用 Cloud NAT,请将标签 cluster.gdc.goog/enable-node-egress-to-outside-the-org: "true" 添加到标准集群对象。
创建 Cloud NAT 网关
为标准集群创建网关的过程与创建任何项目级 Cloud NAT 网关的过程相同。
在本例中,我们将重点介绍标准集群 Cloud NAT 的集群过滤功能,并创建一个与第一种方案类似的设置,但要指定标准集群 user-vc-1 的名称,该集群是端点(将通过网关路由流量)所在的集群。因此,此网关将限定为此特定集群。
apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
namespace: project-1
name: gateway-1
spec:
workloadSelector: # Immutable
labelSelector:
workloads:
matchLabels:
app: aa
clusters:
matchLabels:
kubernetes.io/metadata.name: user-vc-1
subnetRefs: # Mutable
- subnet-1
- subnet-2
此配置将选择标准集群 user-vc-1 中所有命名空间内具有标签 app: aa 的所有工作负载。
检查网关的状态
运行以下 kubectl 命令,检查网关的状态。
export MGMT_KUBECONFIG=<path_to_management_kubeconfig>
kubectl get cloudnatgateways gateway-1 -n project-1 --kubeconfig "${MGMT_KUBECONFIG:?}"
如果配置正确,Cloud NAT 网关的状态条件字段应显示类型为 Ready 的条件设置为 true,并且子网标记为 OK,如以下示例输出所示:
apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
namespace: project-1
name: gateway-1
spec:
workloadSelector: # Immutable
labelSelector:
workloads:
matchLabels:
app: aa
clusters:
matchLabels:
kubernetes.io/metadata.name: user-vc-1
subnetRefs: # Mutable
- subnet-1
- subnet-2
status:
conditions:
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: Ready
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: SubnetsReady
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: PerimeterConfigurationReady
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: EgressRoutesReady
subnets:
- name: subnet-1
status: OK
- name: subnet-2
status: OK
测试流量
通过从分配给标准集群中网关的某个 pod 或虚拟机向外部端点发出 curl 命令来测试流量。接收端点应看到来自与网关关联的出站 IP 之一的数据包。具有相同标签的共享集群中的端点无法使用此网关发送出站流量。
针对集群的网关配置的限制
集群级网关中的工作负载标签匹配器 (workloadSelector.labelSelector.workloads.matchLabels) 不得与项目级网关中的工作负载标签匹配器重叠。如 Cloud NAT 配置的限制中所述,同一项目和可用区中的网关的 workloadSelector.labelSelector.workloads.matchLabels 不得重叠。
Cloud NAT 配置的限制中列出的其他限制也适用于集群级网关配置。