具有连接超时的 Cloud NAT 网关

前提条件

在设置网关之前,您必须获取适当的 Identity and Access Management (IAM) 权限,确保您的项目具有适当的网络策略,并启用出站流量。

如需了解详情,请参阅 Cloud NAT 使用入门

Cloud NAT 网关使用外部 leaf 子网作为输入。如需详细了解如何为 Cloud NAT 配置外部子网,请参阅 为 Cloud NAT 创建外部子网

创建和管理具有连接超时的 Cloud NAT 网关

本文档介绍如何创建和管理具有连接超时的 Cloud NAT 网关。此用例创建的设置与第一个场景类似,但为通过 Cloud NAT 网关建立的连接指定了超时。

下图显示了一个具有多个出站 IP 的示例网关设置: 该图显示了一个具有多个出站 IP 的 Cloud NAT 网关连接到两个子网。

默认情况下,通过 Cloud NAT 网关创建的出站连接具有以下超时。您可以根据需要手动配置它们。

超时 默认值(秒)
非 TCP 连接 60
空闲 TCP 连接 8000
TCP 连接拆除 10
TCP 连接建立 60

创建具有超时的 Cloud NAT 网关

此示例定义了一个具有连接超时的 Cloud NAT 网关。 与之前的示例一样,此配置会将来自subnet-1subnet-2的出站 IP 分配给带有app:aa标签的出站流量。 此外,此配置还会使用自定义值替换默认超时。

apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
  namespace: project-1
  name: gateway-1
spec:
  workloadSelector:   # Immutable
    labelSelector:
      workloads:
        matchLabels:
          app: aa
  subnetRefs:          # Mutable
  - subnet-1
  - subnet-2
  connectionOptions:   # Mutable
    nonTCPTimeoutSeconds: 10            # All non-TCP connections. 60 by default
    tcpTimeoutSeconds: 900              # Established TCP connections. 8000 by default
    tcpTeardownTimeoutSeconds: 10       # TCP connection teardown. 10 by default
    tcpEstablishmentTimeoutSeconds: 10  # TCP connection establishment. 60 by default

您可以使用以下 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
  subnetRefs:         # Mutable
  - subnet-1
  - subnet-2
  connectionOptions:   # Mutable
    nonTCPTimeoutSeconds: 10
    tcpTimeoutSeconds: 900
    tcpTeardownTimeoutSeconds: 10
    tcpEstablishmentTimeoutSeconds: 10
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

如需验证新配置是否生效,您可以 检查网关的状态