Google Distributed Cloud (GDC) air-gapped 支持 标准集群,这是一种由应用 运维团队管理的 单项目自助式 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不得重叠。