Cloud Workstations 架构

Cloud Workstations 可管理 Compute Engine 虚拟机永久性磁盘 (PD) 等 Google Cloud 资源,让您能够更好地了解和控制项目的资源。例如,您可以设置定期磁盘快照政策,以针对所有工作站 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 中使用映像流式传输:

  • 您必须在 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 映像流式传输限制适用。