
打开链接点亮社区Star,照亮技术的前进之路。每一个点赞,都是社区技术大佬前进的动力

Github 地址: *https://github.com/orgs/secretflow/kuscia
Kuscia(Kubernetes-based Secure Collaborative InfrA)是一款基于 K3s 的轻量级隐私计算任务编排框架,旨在屏蔽异构基础设施和协议,并提供统一的隐私计算底座。在此基础上,kuscia 提供了资源管理、应用调度、容器加载、服务发现、数据安全访问、运维监控等诸多能力。
Kuscia 集群由控制平面(俗称调度面、Master)和节点组成。控制平面负责调度,节点负责计算。
一般来讲,控制平面和节点之间,1:N 组成了中心化网络,1:1 组成了点对点(P2P)网络。中心化网络中的节点称为 Lite 节点,点对点网络中的节点称为 Autonomy 节点。

Kuscia 支持 Lite 节点与 Autonomy 节点、以及两个中心化网络互联互通,并支持与第三方厂商的节点互联互通,从而构建更大的隐私计算网络。

控制平面监听和响应集群事件,实现资源管理和应用调度功能,核心组件包括 K3s、Kuscia Controllers、Kuscia Storage(暂未开源)、Envoy、互联互通适配器。
K3s 是一个轻量级的 Kubernetes 发行版,用于处理 Kubernetes 的内置资源。
Kuscia 扩展了一组 K3s 控制器,用于处理 Kuscia 的自定义资源,这些控制器包括:
Kuscia Storage 是对 K3s 原生集群存储的补充。K3s 原生集群存储不适合存储大 value,因此对于大 value 的资源属性,如作业配置等,将存储在 Kuscia Storage
中。该模块暂未开源。
Envoy 是一个开源的边缘和服务代理。在控制平面中,Envoy 是节点与 Master、Master 与 Master 之间的流量代理,从 DomainRoute Controller 接收路由规则和身份认证、鉴权策略。
Envoy 将发送给互联互通合作方 Master 的请求转发到对端的 Envoy(若对端非 Kuscia 架构,则转发给对端网关),同时对来自节点和互联互通合作方 Master
的请求进行身份认证和鉴权,将合法请求转发给 K3s 的 ApiServer 或 Kuscia Storage。
节点的全称为隐私计算节点,由一组工作机器(或虚拟机)组成,托管运行隐私计算应用的 Pod。
根据组网模式的不同,节点分为 Lite 和 Autonomy 两种类型:
Lite 节点主要由 Agent、NetworkMesh、DataMesh(功能暂不完备),提供容器管理、通信管理、数据管理等功能。
此外,节点支持服务组件可插拔,用户可根据实际场景使用所需要的服务组件。
Agent 主要负责节点实例注册和容器管理。将节点实例注册为 K3s 集群的工作节点后,用于管理 K3s 集群下发的任务 Pod,并对 Pod 生命周期和节点实例生命周期进行管理。
Agent 当前支持 RunC、 RunP 和 RunK 三种运行时:

三种运行时有各自的适用场景,你可以在不同的场景中根据运行时的特性来选择最合适的运行时:
RunC | RunP | RunK | |
|---|---|---|---|
资源隔离 | 支持 | 不支持 | 支持 |
部署权限 | Kuscia 容器特权启动 | 无要求 | 申请机构 K8s 动态创建资源权限(例如 Pod、ConfigMap 等) |
任务安全风险扩散 | 任务运行在不同容器中,不易扩散 | 任务运行在同一容器中,易扩散 | 任务运行在不同容器(Pod)中,不易扩散 |
资源利用率 | 较低 | 较低 | 较高(任务需要的资源可以在机构 K8s 侧动态扩缩) |
NetworkMesh 是算法容器之间进行网络通信的基础设施,包含 CoreDNS、DomainRoute、Envoy、Transport 四个组件。
CoreDNS 是一个灵活可扩展的 DNS 服务器,在 Kuscia 中,主要用于解析应用 Service 的域名,从而实现域内的服务发现。
节点侧的 DomainRoute,一方面监听 DomainRoute Controller 配置的节点与节点、节点与 master 之间的路由规则、身份认证和鉴权策略;另一方面监听节点命名空间下的
Service 和 Endpoints,配置 Envoy 的 Upstream Cluster,从而实现跨域的服务发现。
在节点侧,Envoy 是节点与 Master、节点与节点之间流量代理,从 DomainRoute 接收路由规则、身份认证和鉴权策略以及 Upstream Cluster 配置。
Envoy 将发送给 Master 和合作节点的请求转发给对端的 Envoy(若对端非 Kuscia 架构,则转发给对端网关),同时对来自合作节点的请求进行身份认证和鉴权,
将合法请求转发到目标应用的 Pod 上。
适配《北京金融科技产业联盟互联互通标准》的传输层通信组件,提供消息队列的传输模式。
负责数据源和数据集(数据表、模型、任务报告等)的注册和管理,元信息的查询修改功能。注意该组件暂未实现权限管控功能,请勿在生产环境中使用该组件。
Kuscia 支持两种组网模式:中心化组网模式和点对点组网模式。
{#centralized}
中心化组网模式下,多个节点共享控制平面,控制平面负责管理多个节点的资源和任务调度。这种模式下节点占用资源较少,称为 Lite 节点。
中心化组网模式适合于大型机构内部的节点互联,通过统一的控制平面,可显著降低运维和资源成本,且便于快速新增节点。

{#peer-to-peer}
在点对点(P2P: Peer-to-Peer)组网模式下,节点拥有独立的控制平面,节点实例和控制平面在同一个子网中,这种类型的节点被称为 Autonomy 节点。
在该模式下,参与方通过 InterConn Controller,
从调度方同步 Pod 到本集群,由本方 Scheduler 绑定到节点实例。
点对点组网模式适合小型机构或是安全性要求高的场景。

Kuscia 提供三种部署模式:Docker 模式、K8s 模式、K8s 控制器模式,以适配不同机构的基础设施。

在 Kuscia 编排框架中,作业(Job)编排和任务(Task)调度主要通过 Job Controller、Task Controller、InterConn Controller、Kuscia Scheduler 协同完成。
在点对点(P2P)组网模式下,Job 的调度时序图如下:

其中 Job 中的一个 Task 调度流程如下:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。