Cloud Workstations 架构

Cloud Workstations 管理 Google Cloud 资源(例如 Compute Engine 虚拟机永久性磁盘 (PD)),让您可以更深入地了解和控制项目资源。例如,您可以设置计划磁盘快照政策,以针对所有工作站永久性磁盘强制执行备份政策。同样,在项目中包含虚拟机,可让您无缝访问和管理 VPC 网络中的资源。

下图说明了 Cloud Workstations 的架构。

架构图

图 1. Cloud Workstations 架构

工作站集群

工作站集群包含并管理项目中的单个云区域VPC 网络中的一组工作站。每个工作站集群都包含两个由 Google Cloud 管理的组件:控制器和网关。

  • 控制器:管理项目中虚拟机实例和其他工作站资源的生命周期。

    这些控制器使用 Compute Engine API 管理资源的生命周期,并利用 Private Service Connect 将流量路由到工作站的虚拟机。

  • 网关:接收来自绑定到特定工作站的客户端的流量,并将流量转发到相应的虚拟机实例。每个工作站集群都有一个唯一的域名,并且每个工作站都可以通过该工作站集群网域的子网域(例如 $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev)访问。

工作站集群的其他功能如下:

  • 管理员和平台团队会创建工作站集群,用于定义特定区域中的一组工作站及其连接的 VPC 网络。

  • 工作站集群与 Google Kubernetes Engine (GKE) 集群无关。

  • 每个工作站集群都有一个专用控制器,该控制器连接到位于 Private Service Connect 的工作站所在的 VPC(这对 VPC 对等互连限制没有影响)。此控制器会在工作站资源的整个生命周期内对其进行管理,并通过公共集群网关为工作站提供网络出站流量和入站流量。

  • 每个云区域至少需要一个工作站集群。

  • 如有必要,还可以启用完全专用网关,以便只有专用网络内的端点才能访问 Cloud Workstations。

VPC 网络

创建工作站集群时,您需要指定项目和 VPC 网络来托管资源。然后,Cloud Workstations 会在您的项目中预配以下资源:

  • Private Service Connect:在 Cloud Workstations 控制器与您的 VPC 之间建立连接,从而在项目内创建资源。

  • 虚拟机实例:工作站启动后,系统会在您的项目和 VPC 内动态创建 Compute Engine 虚拟机。系统会在用户会话结束时或经过可配置的会话超时后自动删除此虚拟机。

    • 虚拟机网关:从工作站集群网关拉取客户端流量,对其进行身份验证和授权,然后将其转发到容器。

    • 容器:定义工作站中预安装的工具(例如 IDE 或代码编辑器),以及工作站配置所指定的任何其他程序或设置。

      Cloud Workstations 提供了许多基础映像,这些映像都预配置了热门 IDE 和语言工具。此外,管理员和平台团队可以通过创建和指定包含满足开发者需求所需工具的自定义容器映像来自定义其环境。这些容器映像可以扩展 Cloud Workstations 基础映像,也可以是平台团队创建的新自定义 Linux 容器映像。

  • 永久性磁盘:挂接到工作站虚拟机的永久性磁盘,已装载到 /home 文件夹中,可用于在会话结束后存储数据和文件。

资源生命周期

Cloud Workstations 管理虚拟机、容器映像和永久性磁盘,以用作每个工作站的运行时环境。请在工作站配置中为这些资源配置规范。

启动工作站后,Cloud Workstations 会执行以下操作:

  1. 创建虚拟机。
  2. 将工作站容器映像拉取到虚拟机上。
  3. 工作站首次启动时,创建一个永久性磁盘以充当工作站的 /home 目录。
  4. 将永久性磁盘挂接到虚拟机。
  5. 在虚拟机上启动容器,并将永久性磁盘装载到容器中的 /home 目录。

会话结束后,Cloud Workstations 会删除虚拟机,但会分离并保留永久性磁盘,以便在将来的工作站会话中使用。工作站服务会保留该磁盘,直到该工作站被删除为止。在这之后,相应的永久性磁盘也会被删除,不过您也可以选择将其配置为保留

资源池

管理员和平台团队可以使用池大小工作站配置选项,选择池中的虚拟机和永久性磁盘,以加快工作站启动速度。指定后,服务会将指定数量的永久性磁盘和虚拟机汇集到一起,并在工作站分配之前将容器映像预先拉取到虚拟机上。池中未分配的虚拟机和磁盘每 12 小时会自动删除并重新创建一次。这样可以避免创建虚拟机的等待时间以及将容器映像拉取到虚拟机上,从而缩短工作站的启动时间。

启用池化后,Cloud Workstations 在启动工作站时执行以下操作:

  1. 从已预提取容器映像的池中选择虚拟机。
  2. 首次启动工作站时,请从池中选择永久性磁盘。
  3. 将永久性磁盘挂接到虚拟机。
  4. 在虚拟机上启动容器映像,并将永久性磁盘装载到容器映像中的 /home 目录。
  5. 通过创建新的虚拟机和永久性磁盘来替换已分配的虚拟机和永久性磁盘,以重新填充池。

会话结束后,Cloud Workstations 会删除虚拟机,但会分离并保留永久性磁盘,以便在将来的工作站会话中使用。工作站服务会保留该磁盘,直到该工作站被删除为止。在这之后,相应的永久性磁盘也会被删除,不过您也可以选择将其配置为保留

容器映像更新

由于工作站容器映像已预先拉取到共用虚拟机上,因此对于远程映像代码库中使用同一映像标记的容器映像更新,直到所有共用虚拟机在 12 小时后都被分配或删除后,才会被提取。届时,系统会创建新的虚拟机来补充该池并拉取更新后的容器映像。

如需强制刷新池以立即获取容器映像更新,管理员可以将 pool_size 设置为 0,然后将其重新设置为首选 pool_size。在 Google Cloud 控制台中,在工作站配置中停用快速启动工作站功能,保存配置,重新设为首选数字,然后再次保存。

或者,管理员和平台团队可以更新工作站配置中 container.image 字段中的映像标记,这会强制刷新池以选择新的容器映像标记。

使用映像流式传输缩短工作站启动时间

Cloud Workstations 支持映像流式传输,可通过缩短工作站容器映像拉取时间来缩短工作站启动时间。

Cloud Workstations 中的映像流式传输通常将容器映像拉取时间从几分钟缩短到几秒钟,并且工作站容器通常无需等待整个映像下载完毕即可启动运行。

使用要求

您必须满足以下要求才能在 Cloud Workstations 中使用映像流式传输:

  • 您必须在工作站宿主项目中启用 Container File System API。

    启用 Container File System API

    或者,您也可以运行以下 gcloud CLI 命令,在工作站宿主项目中启用 Container File System API:

    gcloud services enable containerfilesystem.googleapis.com
    

  • 您的容器映像必须存储在 Artifact Registry 中。

  • Artifact Registry 代码库必须位于 Cloud Workstations 区域所在的区域中,或位于与工作站运行所在的区域对应的多区域中。

  • 您必须指定在工作站配置中使用的服务帐号。

  • 如果您的集群位于 VPC Service Controls 边界内,您必须添加出站规则,以允许您的服务帐号访问托管容器映像的项目上的 Container File System API。如果您使用的是预配置的 IDE,则必须将 cloud-workstations-images 项目(项目编号为 662288601415)添加到许可名单中。

限制

  • 在符合条件的映像首次拉取期间,您可能不会注意到映像流式传输的优势。但是,在映像流式传输缓存映像后,工作站上的后续映像拉取都会受益于映像流式传输。

  • 需遵守其他 GKE 映像流式传输限制