具有连接超时的 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

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