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) 集群无关。

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

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

  • 如有必要,也可以启用完全私有 网关, 只有专用网络中的端点才有权访问 Cloud Workstations。

VPC 网络

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

  • Private Service Connect:在 Cloud Workstations 控制器和您的 VPC 之间建立连接,以便在项目中创建资源。

  • 虚拟机实例:Compute Engine 虚拟机是在您的 项目和 VPC 使用。此虚拟机会在用户会话结束或在可配置的会话超时后自动删除。

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

    • 容器:定义工作站中预安装的工具(例如 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 工作站会删除虚拟机,但会分离并保留永久性磁盘,以便在日后的其他工作站会话中使用。工作站服务会保留磁盘,直到工作站 永久性磁盘也会随之删除 (可选) 配置为保留

容器映像更新

由于工作站容器映像会预先拉取到池化虚拟机上,因此在 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 映像流式传输限制