【发布时间】:2020-05-14 14:46:14
【问题描述】:
我似乎有一个类似于this 问题的问题,因为在 GCP 上使用 gitlab 运行器构建 docker 映像时出现以下超时
Put https://registry.gitlab.com/v2/[redacted-repo]: dial tcp 35.227.35.254:443: i/o timeout
此时我的谷歌云 NAT 给出以下日志输出:
{
"insertId": "rh7b2jfleq0wx",
"jsonPayload": {
"allocation_status": "DROPPED",
"endpoint": {
"project_id": "gitlab-autoscale-runners",
"vm_name": "runner-5dblbjek-auto-scale-runner-1589446683-0b220f90",
"region": "europe-west4",
"zone": "europe-west4-b"
},
"connection": {
"protocol": 6,
"src_port": 42446,
"src_ip": "some-ip",
"dest_ip": "some-ip",
"dest_port": 443
},
"vpc": {
"vpc_name": "default",
"subnetwork_name": "default",
"project_id": "gitlab-autoscale-runners"
},
"gateway_identifiers": {
"gateway_name": "gitlab-runner-gateway",
"router_name": "gitlab-runner-router",
"region": "europe-west4"
}
},
"resource": {
"type": "nat_gateway",
"labels": {
"region": "europe-west4",
"router_id": "7964886332834186727",
"gateway_name": "gitlab-runner-gateway",
"project_id": "gitlab-autoscale-runners"
}
},
"timestamp": "2020-05-14T10:17:55.195614735Z",
"labels": {
"nat.googleapis.com/nat_ip": "",
"nat.googleapis.com/instance_name": "runner-5dblbjek-auto-scale-runner-1589446683-0b220f90",
"nat.googleapis.com/network_name": "default",
"nat.googleapis.com/subnetwork_name": "default",
"nat.googleapis.com/router_name": "gitlab-runner-router",
"nat.googleapis.com/instance_zone": "europe-west4-b"
},
"logName": "projects/gitlab-autoscale-runners/logs/compute.googleapis.com%2Fnat_flows",
"receiveTimestamp": "2020-05-14T10:18:00.422135520Z"
}
上述问题似乎表明过度使用的 NAT 端口存在问题。通过使用 google cloud CLI,我已经确认这在我们的案例中不是问题,见下文。
$ gcloud compute routers get-nat-mapping-info gitlab-runner-router
---
instanceName: runner-5dblbjek-auto-scale-runner-1589446683-0b220f90
interfaceNatMappings:
- natIpPortRanges:
- some-id:1024-1055
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
sourceAliasIpRange: ''
sourceVirtualIp: some-ip
- natIpPortRanges:
- some-ip:32768-32799
numTotalDrainNatPorts: 0
numTotalNatPorts: 32
sourceAliasIpRange: ''
sourceVirtualIp: some-ip
我似乎只使用了一些 64 个端口。
谷歌云路由器通告如下状态:
kind: compute#routerStatusResponse
result:
natStatus:
- autoAllocatedNatIps:
- some-ip
minExtraNatIpsNeeded: 0
name: gitlab-runner-gateway
numVmEndpointsWithNatMappings: 3
network: https://www.googleapis.com/compute/v1/projects/gitlab-autoscale-runners/global/networks/default
相同的 docker-images 在本地运行或在共享的 gitlab 运行器中(即不在 NAT 后面时)确实构建成功。
在 google cloud nat 后面构建这个 docker 镜像时如何防止超时?
【问题讨论】:
标签: google-cloud-platform nat google-cloud-networking