许多 GKE 客户运行大规模 AI/机器学习工作负载或拥有敏感知识产权 (IP),例如专有模型权重。本文档介绍了一种基础设施架构,该架构可在多个区域中运行的远程实例上运行容器,并由集群中的节点进行管理。这种关联的基础设施(包括各种操作系统映像和功能)称为 GKE Hypercluster。
GKE Hypercluster 适用于希望获得超出 GKE 或 AI Hypercomputer 限制的安全性和可伸缩性,并且愿意接受增加的操作摩擦来实现这些目标的客户。
何时使用 GKE Hypercluster
默认情况下,GKE 集群旨在满足大多数生产 AI 工作负载的要求,包括具有特殊安全性和可伸缩性要求的工作负载。例如,GKE 支持以下使用场景:
- 在机密 Google Kubernetes Engine 节点上运行 GPU,并从工作负载访问 vTPM 或基于硬件的机密计算模块。
- 使用 Workload Identity Federation for GKE 将加密数据的访问权限限制为特定的授权身份。
- 使用 ComputeClass 和节点池自动创建功能,根据可用容量部署 TPU 和 GPU 节点。
- 使用 Access Approval、Access Transparency 和 GKE control 平面 authority 控制和观察 Google 人员的任何访问行为。
GKE Hypercluster 中的关联基础架构专为特定的安全性和可伸缩性使用场景而设计,这些场景需要的功能超出了典型 GKE 架构的现有限制。根据设计,某些 GKE 可观测性、问题排查功能和特性不适用于关联的基础设施。此基础架构修改了典型的 GKE 集群架构,以满足以下特殊用例:
保护模型和查询免受内部威胁:防止您自己的平台管理员和 Google 人员访问专有模型权重或敏感推理查询和回答。AI 资产仅在经过认证且可验证的环境中解密。
跨区域运行 AI 工作负载:以超出支持的节点伸缩限制的规模部署工作负载。在任何有可用容量的区域(包括集群区域或可用区以外的位置)中创建和使用加速器基础设施。
工作原理
如 GKE 集群架构中所述,标准模式集群具有区域级或可用区级控制平面,可用于提供 Kubernetes API 并管理集群中的所有节点和节点池。集群中的所有节点都使用特定的 VPC 网络,该网络也可能被其他 Google Cloud 资源使用。每个 GKE 节点都会运行各种系统组件,例如 kubelet 节点代理、日志记录和指标代理以及其他 Kubernetes 和 GKE 组件。
相比之下,GKE Hypercluster 使用名为“关联的 runner”的实例,这些实例未在 Kubernetes API 服务器中注册为 Node 对象。这些实例具有以下属性:
- 没有 Kubernetes 代理,且只有极少量的 GKE 组件。
- 基于应用场景的专用操作系统映像。没有 GKE 节点映像。
- 实例使用单独的专用 VPC 网络。
关联的运行器由集群中的控制节点管理,这些节点将运行器与集群关联。控制节点运行 kubelet 等系统组件。单个控制节点可以与多个运行器关联。这些关联的运行器旨在运行超大规模的工作负载,例如需要比集群区域中的数据中心提供更多算力的训练作业。
在设置基础设施期间,您会根据自己的使用情形创建具有特定配置的 runner,然后将这些实例关联到集群中的专用控制节点。Kubernetes API 只需要管理控制节点,因为关联的 runner 实例没有 kubelet,也不会生成 API 服务器流量。创建关联的 Runner 实例时,您可以通过以下任一方式配置实例:
- 默认配置:默认情况下,关联的实例是运行 Container-Optimized OS 操作系统映像的 Compute Engine 虚拟机。平台管理员和 SRE 等紧急情况处理人员可以使用 SSH 访问实例。如果您希望保留对基础架构的管理员访问权限,这些实例非常适合。
- 密封配置:某些 AI 工作负载会处理敏感数据,例如专有模型权重和加密查询。在需要保护 AI 资产免遭所有访问(包括 Google 人员和您自己的管理员)的情况下,您可以将关联的 runner 实例配置为密封模式。这些密封实例具有以下属性:
- 使用最小的操作系统映像。
- 针对 TPU 使用 Titanium Intelligence Enclave,针对 GPU 使用 NVIDIA 机密计算。
- 执行工作负载级和固件证明。
- 验证容器映像签名。
- 阻止对实例和容器的所有管理员权限。
无论您使用哪种配置,实例都不包含 GKE 节点中包含的许多组件和功能,例如 GKE 特定的 TPU 运行时参数或 GKE 日志记录和监控代理。
默认配置简介
默认情况下,您为 GKE Hypercluster 创建的实例旨在运行生产工作负载,同时提供与典型 GKE 节点类似的机制,以便进行问题排查和应急响应。实例在 Compute Engine 机器类型上运行,并使用 Container-Optimized OS 操作系统映像。在发生中断或崩溃等突发事件期间,管理员可以直接访问实例来排查问题。与 Kubernetes 节点不同,这些实例不会运行许多支持 Kubernetes 和 GKE 功能的系统组件,因此每个实例上有更多可分配资源。
您可以在任何 Google Cloud 区域中创建实例,然后将这些实例与集群中的控制节点相关联。控制节点可执行 Kubernetes 控制平面的许多功能,包括管理已部署工作负载的生命周期。
密封配置简介
如果您的主要使用情形是保护资产免遭任何访问,则可以将关联的 Runner 配置为使用密封配置,这样一来,实例将具有以下安全属性:
- 每个实例都是基于特定技术的可信执行环境 (TEE):
- TPU 使用 Titanium Intelligence 飞地,这是私密 AI 计算平台的一部分。
- GPU 使用 NVIDIA 机密计算来保护使用中的数据。
- 这些实例运行基于 Container-Optimized OS 的最小操作系统映像,该映像会停用 SSH 访问、阻止容器 shell 访问并运行证明代理。
- 您可以定义一项政策,用于确切指定哪些工作负载可以在实例上运行。例如,您可以要求工作负载使用已签名的容器映像摘要或具有特定的 Pod 规范。
- 证明代理会将固件和工作负载测量结果发送到 Google Cloud Attestation,并返回可验证的证明声明结果令牌。
生成的实例提供受限、经过验证的环境,其中只有经过批准的代码才能运行,并且敏感数据在基于硬件的安全隔离区中进行处理。实例返回的证明信息可验证工作负载是否运行已获批准的代码,以及是否部署在正确的实例上。
您可以通过以下方式使用这些密封实例来保护加密的模型、查询和回答:
模型权重:
- 使用 Cloud KMS 中的 Cloud HSM 密钥加密模型权重。
- 将加密的模型权重存储在 Cloud Storage 中。
- 仅向经过证明的工作负载授予对相应存储桶的读取权限。
- 仅向经过证明的工作负载授予解密密钥访问权限。
查询和回答:
- 使用 Cloud KMS 中的 Cloud HSM 密钥加密查询和响应。
- 仅向经过证明的工作负载授予解密访问权限。
- 在工作负载之间发送加密数据时,需要提供证明。
密封配置是关联的运行器实例的可选安全层。与默认配置类似,您可以在任何区域和可用区中创建密封实例。不过,由于密封实例具有安全属性,因此管理员和 Google 人员无法访问宿主实例进行问题排查。
资格要求
GKE Hypercluster 专为无法通过典型的 GKE 集群架构和功能满足的特定 AI/机器学习应用场景而设计。使用 GKE Hypercluster 的客户具有非典型的安全性和可伸缩性要求。GKE Hypercluster 仅适用于符合条件的 GKE 客户。如需了解您是否符合条件并申请访问权限,请与您的专属客户支持团队联系。