设置网络
本页面介绍了 Vertex AI Workbench 代管式笔记本实例的网络选项,并向您展示了如何设置网络。
建议已熟悉 Google Cloud 网络概念的网络管理员阅读本指南。
概览
本指南介绍了如何配置以下各个网络选项:
默认情况下,您的代管式笔记本实例使用 Google 管理的网络。但是,如果需要,您也可以改为指定位于您的项目中的 Virtual Private Cloud 网络或您有权访问的共享 VPC 网络。如果您指定 VPC 或共享 VPC 网络,则该网络还需要进行专用服务访问通道连接。
支持的功能比较
下表介绍了每个网络选项支持的常用功能。
特征 | Google 管理的网络 | 实例的项目中的 VPC 网络 | 共享 VPC 网络 |
---|---|---|---|
外部 IP | 支持 | 支持 | 支持 |
内部 IP | 支持 | 支持 | 支持 |
专用 Google 访问通道 | 不支持 | 支持 | 支持 |
VPC | 支持 | 支持 | 支持 |
VPC 网络对等互连(需要 Service Networking) | 不支持 | 支持 | 支持 |
使用默认 Google 管理的网络
默认网络由 Google 管理,无需配置额外的设置。
使用默认 Google 管理的网络创建代管式笔记本实例时,该实例会部署在租户项目中并使用默认 VPC 和子网。
为了下载 Python 或 Conda 软件包等其他资源,使用默认 Google 管理的网络的代管式笔记本实例需要外部 IP 地址。
将实例连接到同一项目中的 VPC 网络
如需将代管式笔记本实例连接到代管式笔记本实例所在的项目中的 VPC 网络,请完成以下步骤。
此选项要求您配置专用服务访问通道。
准备工作
选择或创建代管式笔记本实例所在的 Google Cloud 项目。
-
启用 Compute Engine, Notebooks, and Service Networking API。
安装 gcloud CLI 以运行本指南中的
gcloud
命令行示例。
为您的 VPC 设置专用服务访问通道
设置专用服务访问通道时,您需要在自己的网络与 Google 或第三方服务(服务提供方)拥有的网络之间建立专用连接。在本例中,服务提供方是代管式笔记本实例。如需设置专用服务访问通道,请为服务提供方预留 IP 范围,然后使用代管式笔记本实例创建对等互连连接。
配置您的项目 ID
如需配置您的项目 ID,请使用以下命令。
gcloud config set project PROJECT_ID
启用 API
确保您已启用所需的 API。创建或选择 VPC
在支持的代管式笔记本区域中创建或选择现有 VPC,以便与代管式笔记本实例结合使用。
如果您已拥有配置了专用服务访问通道的 VPC,并且要使用该 VPC 与代管式笔记本实例建立对等互连,请跳至创建代管式笔记本实例。
如果您需要创建新的 VPC,请运行以下 gcloud CLI 命令:
gcloud compute networks create VPC_NAME \ --project=PROJECT_ID --subnet-mode=auto \ --mtu=1460 --bgp-routing-mode=regional gcloud compute firewall-rules create VPC_NAME-allow-icmp \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ ICMP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=icmp gcloud compute firewall-rules create VPC_NAME-allow-internal \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ connections\ from\ any\ source\ in\ the\ network\ IP\ range\ to\ any\ instance\ on\ the\ network\ using\ all\ protocols. \ --direction=INGRESS --priority=65534 --source-ranges=10.128.0.0/9 \ --action=ALLOW --rules=all gcloud compute firewall-rules create VPC_NAME-allow-rdp \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ RDP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network\ using\ port\ 3389. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=tcp:3389 gcloud compute firewall-rules create VPC_NAME-allow-ssh \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ TCP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network\ using\ port\ 22. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=tcp:22
将
VPC_NAME
替换为您的 VPC 的名称。
创建和配置 DNS 条目
Vertex AI Workbench 代管式笔记本实例使用 Virtual Private Cloud 网络在默认情况下不会处理的多个网域。为确保您的 VPC 网络正确处理发送到这些网域的请求,请使用 Cloud DNS 添加 DNS 记录。如需详细了解 VPC 路由,请参阅路由。
如需为网域创建代管式可用区,请添加将路由请求的 DNS 条目,执行事务,然后完成以下步骤。分别对需要处理请求的多个网域重复上述步骤(从 *.notebooks.googleapis.com
开始)。
在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中,输入以下 Google Cloud CLI 命令。
-
如需为 VPC 网络需要处理的某个网域创建专用代管式可用区,请运行以下命令:
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --dns-name=DNS_NAME \ --description="Description of your managed zone"
替换以下内容:
-
ZONE_NAME
:要创建的可用区的名称。 您必须对每个网域使用单独的区域。下列各个步骤中都将使用此可用区名称。 PROJECT_ID
:托管您的 VPC 网络的项目的 ID-
NETWORK_NAME
:您之前创建的 VPC 网络的名称 -
DNS_NAME
:域名中*.
后面的部分,末尾有英文句点。例如,*.notebooks.googleapis.com
的DNS_NAME
为notebooks.googleapis.com.
-
-
启动一项事务。
gcloud dns record-sets transaction start --zone=ZONE_NAME
-
添加以下 DNS A 记录。此操作会将流量重新路由到 Google 的受限 IP 地址。
gcloud dns record-sets transaction add \ --name=DNS_NAME. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
-
添加以下 DNS CNAME 记录,以指向刚刚添加的 A 记录。此操作会将与相应网域匹配的所有流量重定向至上一步中列出的 IP 地址。
gcloud dns record-sets transaction add \ --name=\*.DNS_NAME. \ --type=CNAME DNS_NAME. \ --zone=ZONE_NAME \ --ttl=300
-
执行事务。
gcloud dns record-sets transaction execute --zone=ZONE_NAME
-
对以下每个网域重复执行上述步骤。每次重复上述步骤时,请将 ZONE_NAME 和 DNS_NAME 更改为相关网域的对应值。每次都应使 PROJECT_ID 和 NETWORK_NAME 保持一致。您现在已对
*.notebooks.googleapis.com
完成上述步骤。*.notebooks.googleapis.com
*.notebooks.cloud.google.com
*.notebooks.googleusercontent.com
*.googleapis.com
,运行与其他 Google API 和服务交互的代码
为托管式笔记本实例预留 IP 地址范围
当您为服务提供方预留 IP 范围时,该范围可供代管式笔记本实例和其他服务使用。如果您计划与使用同一范围的其他服务提供方连接,则建议您分配更大的范围来容纳这些服务提供方,以免 IP 用尽。
使用以下命令通过 gcloud compute addresses create
设置预留的范围。
gcloud compute addresses create PEERING_RANGE_NAME \ --global \ --prefix-length=16 \ --description="Managed notebooks range" \ --network=NETWORK_NAME \ --purpose=VPC_PEERING
替换以下内容:
PEERING_RANGE_NAME
:范围的名称NETWORK_NAME
:网络的名称
prefix-length
值为 16
表示子网掩码为 /16
的 CIDR 地址块将预留,供 Vertex AI Workbench 代管式笔记本等 Google Cloud 服务使用。
为避免服务网络配置无效,请使用 /24
或更小范围的子网掩码。
使用以下命令验证地址。
gcloud compute addresses list
建立对等互连连接
使用 gcloud services vpc-peerings connect
在您的 VPC 宿主项目与 Google 的 Service Networking 之间建立对等互连连接。
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=NETWORK_NAME \ --ranges=PEERING_RANGE_NAME \ --project=PROJECT_ID
如需列出
gcloud services vpc-peerings list --network=NETWORK_NAME
创建代管式笔记本实例
在使用任何请求数据之前,请先进行以下替换:
- USER_ACCOUNT:采用电子邮件地址形式的用户账号。
- MACHINE_TYPE:机器类型,例如
n1-standard-1
。 - PROJECT_ID:代管式笔记本实例的项目 ID。
- NETWORK_NAME:VPC 网络名称。
- LOCATION:您的 VPC 网络的区域。
- NOTEBOOK_NAME:代管式笔记本实例的名称。
- SUBNET_NAME:您的 VPC 网络的子网名称。
- PEERING_RANGE_NAME:可选。对等互连范围的名称(如果您要指定一个)。
HTTP 方法和网址:
POST https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME
请求 JSON 正文:
{ "access_config": { "access_type": "SINGLE_USER", "runtime_owner": "USER_ACCOUNT" }, "virtual_machine": { "virtual_machine_config": { "machine_type": "MACHINE_TYPE", "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_NAME", "internal_ip_only": true, "reserved_ip_range": "PEERING_RANGE_NAME" # Optional } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME" | Select-Object -Expand Content
验证连接性
如需验证代管式笔记本实例是否已连接到 VPC 网络,请完成以下步骤。
在 Google Cloud 控制台中,转到 VPC 网络对等互连页面。
在 VPC 网络对等互连页面上,找到您的连接。
导出自定义路由
如果您使用自定义路由,则需要将其导出,以便 Vertex AI Workbench 代管式笔记本可以导入这些路由。
如需导出自定义路由,请在您的 VPC 中更新对等互连连接。导出自定义路由会将您的 VPC 网络中所有符合条件的静态和动态路由(例如,到本地网络的路由)发送到服务提供方的网络(在本例中是代管式笔记本)。这将建立必要的连接,并可让代管式笔记本实例将流量发回至本地网络。
如需列出要更新的对等互连连接的名称,请使用以下命令。如果您有多个对等互连连接,请忽略 --format
标志。
gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --project=PROJECT_ID \ --format "value(peering)"
如需更新对等互连连接以导出自定义路由,请使用以下命令。
gcloud compute networks peerings update PEERING_NAME \ --network=NETWORK_NAME \ --export-custom-routes \ --project=PROJECT_ID
将 PEERING_NAME 替换为对等互连连接的名称。
检查对等互连连接的状态
如需检查对等互连连接是否处于活跃状态,您可以使用以下命令列出这些连接。
gcloud compute networks peerings list --network NETWORK_NAME
验证您刚刚创建的对等互连连接的状态是否为 ACTIVE
。详细了解处于活跃状态的对等互连连接。
将实例连接到共享 VPC 网络
如需将代管式笔记本实例连接到您有权访问的共享 VPC 网络,请完成以下步骤。
此选项要求您配置专用服务访问通道。
准备工作
选择或创建代管式笔记本实例所在的 Google Cloud 项目。
-
启用 Compute Engine, Notebooks, and Service Networking API。
使用共享 VPC 时,您需要在与 VPC 宿主项目不同的 Google Cloud 项目中运行代管式笔记本实例。重复执行上述步骤,以便在 VPC 宿主项目中启用 Compute Engine、Notebooks 和 Service Networking API。详细了解如何预配共享 VPC。
安装 gcloud CLI 以运行本指南中的
gcloud
命令行示例。
为您的 VPC 设置专用服务访问通道
设置专用服务访问通道时,您需要在自己的网络与 Google 或第三方服务(服务提供方)拥有的网络之间建立专用连接。在本例中,服务提供方是代管式笔记本实例。如需设置专用服务访问通道,请为服务提供方预留 IP 范围,然后使用代管式笔记本实例创建对等互连连接。
配置您的项目 ID
如需配置您的项目 ID,请使用以下命令。
gcloud config set project PROJECT_ID
启用 API
确保您已在您的 VPC 宿主项目和代管式笔记本实例所在的 Google Cloud 项目中启用所需的 API。创建或选择 VPC
在支持的代管式笔记本区域中创建或选择现有 VPC,以便与代管式笔记本实例结合使用。
如果您已拥有配置了专用服务访问通道的 VPC,并且要使用该 VPC 与代管式笔记本实例建立对等互连,请跳至创建代管式笔记本实例。
如果您需要创建新的 VPC,请运行以下 gcloud CLI 命令:
gcloud compute networks create VPC_NAME \ --project=PROJECT_ID --subnet-mode=auto \ --mtu=1460 --bgp-routing-mode=regional gcloud compute firewall-rules create VPC_NAME-allow-icmp \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ ICMP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=icmp gcloud compute firewall-rules create VPC_NAME-allow-internal \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ connections\ from\ any\ source\ in\ the\ network\ IP\ range\ to\ any\ instance\ on\ the\ network\ using\ all\ protocols. \ --direction=INGRESS --priority=65534 --source-ranges=10.128.0.0/9 \ --action=ALLOW --rules=all gcloud compute firewall-rules create VPC_NAME-allow-rdp \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ RDP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network\ using\ port\ 3389. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=tcp:3389 gcloud compute firewall-rules create VPC_NAME-allow-ssh \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/VPC_NAME \ --description=Allows\ TCP\ connections\ from\ any\ source\ to\ any\ instance\ on\ the\ network\ using\ port\ 22. \ --direction=INGRESS --priority=65534 --source-ranges=0.0.0.0/0 \ --action=ALLOW --rules=tcp:22
将
VPC_NAME
替换为您的 VPC 的名称。
创建和配置 DNS 条目
Vertex AI Workbench 代管式笔记本实例使用 Virtual Private Cloud 网络在默认情况下不会处理的多个网域。为确保您的 VPC 网络正确处理发送到这些网域的请求,请使用 Cloud DNS 添加 DNS 记录。如需详细了解 VPC 路由,请参阅路由。
如需为网域创建代管式可用区,请添加将路由请求的 DNS 条目,执行事务,然后完成以下步骤。分别对需要处理请求的多个网域重复上述步骤(从 *.notebooks.googleapis.com
开始)。
在 Cloud Shell 中或安装了 Google Cloud CLI 的任何环境中,输入以下 Google Cloud CLI 命令。
-
如需为 VPC 网络需要处理的某个网域创建专用代管式可用区,请运行以下命令:
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --dns-name=DNS_NAME \ --description="Description of your managed zone"
替换以下内容:
-
ZONE_NAME
:要创建的可用区的名称。 您必须对每个网域使用单独的区域。下列各个步骤中都将使用此可用区名称。 PROJECT_ID
:托管您的 VPC 网络的项目的 ID-
NETWORK_NAME
:您之前创建的 VPC 网络的名称 -
DNS_NAME
:域名中*.
后面的部分,末尾有英文句点。例如,*.notebooks.googleapis.com
的DNS_NAME
为notebooks.googleapis.com.
-
-
启动一项事务。
gcloud dns record-sets transaction start --zone=ZONE_NAME
-
添加以下 DNS A 记录。此操作会将流量重新路由到 Google 的受限 IP 地址。
gcloud dns record-sets transaction add \ --name=DNS_NAME. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
-
添加以下 DNS CNAME 记录,以指向刚刚添加的 A 记录。此操作会将与相应网域匹配的所有流量重定向至上一步中列出的 IP 地址。
gcloud dns record-sets transaction add \ --name=\*.DNS_NAME. \ --type=CNAME DNS_NAME. \ --zone=ZONE_NAME \ --ttl=300
-
执行事务。
gcloud dns record-sets transaction execute --zone=ZONE_NAME
-
对以下每个网域重复执行上述步骤。每次重复上述步骤时,请将 ZONE_NAME 和 DNS_NAME 更改为相关网域的对应值。每次都应使 PROJECT_ID 和 NETWORK_NAME 保持一致。您现在已对
*.notebooks.googleapis.com
完成上述步骤。*.notebooks.googleapis.com
*.notebooks.cloud.google.com
*.notebooks.googleusercontent.com
*.googleapis.com
,运行与其他 Google API 和服务交互的代码
为托管式笔记本实例预留 IP 地址范围
当您为服务提供方预留 IP 范围时,该范围可供代管式笔记本实例和其他服务使用。如果您计划与使用同一范围的其他服务提供方连接,则建议您分配更大的范围来容纳这些服务提供方,以免 IP 用尽。
使用以下命令通过 gcloud compute addresses create
设置预留的范围。
gcloud compute addresses create PEERING_RANGE_NAME \ --global \ --prefix-length=16 \ --description="Managed notebooks range" \ --network=NETWORK_NAME \ --purpose=VPC_PEERING
替换以下内容:
PEERING_RANGE_NAME
:范围的名称NETWORK_NAME
:网络的名称
prefix-length
值为 16
表示子网掩码为 /16
的 CIDR 地址块将预留,供 Vertex AI Workbench 代管式笔记本等 Google Cloud 服务使用。
为避免服务网络配置无效,请使用 /24
或更小范围的子网掩码。
使用以下命令验证地址。
gcloud compute addresses list
建立对等互连连接
使用 gcloud services vpc-peerings connect
在您的 VPC 宿主项目与 Google 的 Service Networking 之间建立对等互连连接。
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=NETWORK_NAME \ --ranges=PEERING_RANGE_NAME \ --project=PROJECT_ID
如需列出
gcloud services vpc-peerings list --network=NETWORK_NAME
创建代管式笔记本实例
在使用任何请求数据之前,请先进行以下替换:
- USER_ACCOUNT:采用电子邮件地址形式的用户账号。
- MACHINE_TYPE:机器类型,例如
n1-standard-1
。 - PROJECT_ID:代管式笔记本实例的项目 ID。
- NETWORK_NAME:VPC 网络名称。
- LOCATION:您的 VPC 网络的区域。
- NOTEBOOK_NAME:代管式笔记本实例的名称。
- SUBNET_NAME:您的 VPC 网络的子网名称。
- PEERING_RANGE_NAME:可选。对等互连范围的名称(如果您要指定一个)。
HTTP 方法和网址:
POST https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME
请求 JSON 正文:
{ "access_config": { "access_type": "SINGLE_USER", "runtime_owner": "USER_ACCOUNT" }, "virtual_machine": { "virtual_machine_config": { "machine_type": "MACHINE_TYPE", "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_NAME", "internal_ip_only": true, "reserved_ip_range": "PEERING_RANGE_NAME" # Optional } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://notebooks.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/runtimes?runtimeId=NOTEBOOK_NAME" | Select-Object -Expand Content
验证连接性
如需验证代管式笔记本实例是否已连接到共享 VPC 网络,请完成以下步骤。
在 Google Cloud 控制台中,转到 VPC 网络对等互连页面。
在 VPC 网络对等互连页面上,找到您的连接。
导出自定义路由
如果您使用自定义路由,则需要将其导出,以便 Vertex AI Workbench 代管式笔记本可以导入这些路由。
如需导出自定义路由,请在您的 VPC 中更新对等互连连接。导出自定义路由会将您的 VPC 网络中所有符合条件的静态和动态路由(例如,到本地网络的路由)发送到服务提供方的网络(在本例中是代管式笔记本)。这将建立必要的连接,并可让代管式笔记本实例将流量发回至本地网络。
如需列出要更新的对等互连连接的名称,请使用以下命令。如果您有多个对等互连连接,请忽略 --format
标志。
gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --project=PROJECT_ID \ --format "value(peering)"
如需更新对等互连连接以导出自定义路由,请使用以下命令。
gcloud compute networks peerings update PEERING_NAME \ --network=NETWORK_NAME \ --export-custom-routes \ --project=PROJECT_ID
将 PEERING_NAME 替换为对等互连连接的名称。
检查对等互连连接的状态
如需检查对等互连连接是否处于活跃状态,您可以使用以下命令列出这些连接。
gcloud compute networks peerings list --network NETWORK_NAME
验证您刚刚创建的对等互连连接的状态是否为 ACTIVE
。详细了解处于活跃状态的对等互连连接。
后续步骤
详细了解 VPC 网络对等互连。
如需了解 VPC 设计,请参阅参考架构和最佳做法。