【隐语Secretflow】一文速通隐私计算节点Domain

打开链接即可点亮社区Star,照亮技术的前进之路。

Github 地址:github.com/secretflow/...

Domain

在 Kuscia 中将隐私计算的节点称为 Domain,一个 Domain 中可以包含多个 K3s 的工作节点(Node)。Kuscia 复用了 K3s 的 Namespace 机制来管理节点权限,一个 Domain 对应 K3s 中的一个 Namespace。你可以使用 Domain 来管理和维护隐私计算节点。具体用例请参考下文。

用例

以下是一些 Domain 的典型用例:

  • 创建 Domain,你将体验如何使用 Domain 创建隐私计算节点相关的 Namespace, ResourceQuota 资源。
  • 更新 Domain,你将熟悉如何更新现有的 Domain,从而变更隐私计算节点相关的 Namespace, ResourceQuota 资源。
  • 清理 Domain,你将熟悉如何清理不需要的 Domain。在 Kuscia 中,清理 Domain 并不会真正的删除 Domain 相关的 Namespace, ResourceQuota 资源,而是会在节点相关的 Namespace 资源上添加标记 Domain 被删除相关标签。
  • 参考 Domain 对象定义,你将获取详细的 Domain 描述信息。

创建 Domain

下面以 alice-domain.yaml 的内容为例,介绍创建 Domain。

yaml 复制代码
apiVersion: kuscia.secretflow/v1alpha1
kind: Domain
metadata:
  name: alice
spec:
  role: partner
  cert: base64<certificate>
  resourceQuota:
    podMaxCount: 100

在该示例中:

  • .metadata.name:表示隐私计算节点 Domain 名称,当前示例为 alice 。相应地,Kuscia 控制器会创建名称和 Domain 同名的 alice Namespace 资源。在 Kuscia 中,通过 Namespace 资源对不同机构用户进行资源隔离。
  • .spec.role:表示隐私计算节点 Domain 的角色,默认为 ""。支持两种取值:partner""
    • partner:表示外部节点,用在点对点组网模式下的协作方节点。点对点组网模式下,需要在任务调度方的集群中创建协作方的 Domain,在创建该 Domain 时,需要将 role 的值设置为 partner
    • "":表示内部节点。
  • .spec.cert:表示 BASE64 编码格式的隐私计算节点证书,该证书是配置文件中的 domainKeyData 私钥产生的,可以通过这里的命令生成。在中心化模式场景不需要填充该字段。
  • .spec.resourceQuota.podMaxCount:表示 Domain 所管理的隐私计算节点命名空间(Namespace)下所允许创建的最大 Pod 数量,当前示例为 100
  1. 运行以下命令创建 Domain。

    shell 复制代码
    kubectl apply -f alice-domain.yaml
  2. 检查 Domain 是否创建成功。

    shell 复制代码
    kubectl get domain alice
    NAME    AGE
    alice   3s
  3. 检查 Domain 相关的 Namespace, ResourceQuota 资源是否创建成功。

    shell 复制代码
    kubectl get namespace alice
    NAME     STATUS   AGE
    alice    Active   18s
    
    kubectl get resourcequota -n alice
    NAME                  AGE   REQUEST      LIMIT
    resource-limitation   18s   pods: 0/100

更新 Domain

下面以 alice-domain.yaml 的内容为例,介绍更新 Domain。

yaml 复制代码
apiVersion: kuscia.secretflow/v1alpha1
kind: Domain
metadata:
  name: alice
spec:
  role: partner
  cert: base64<certificate>
  resourceQuota:
    podMaxCount: 200

在该示例中:

  • .spec.resourceQuota.podMaxCount 的值调整为 200
  1. 运行以下命令更新 Domain。

    shell 复制代码
    kubectl apply -f alice-domain.yaml
  2. 检查 Domain 相关的 ResourceQuota 资源是否更新成功。

    shell 复制代码
    kubectl get resourcequota -n alice
    NAME                  AGE   REQUEST      LIMIT
    resource-limitation   4m    pods: 0/200

清理 Domain

下面以 Domain alice 为例,介绍清理 Domain。

  1. 运行以下命令清理 Domain。

    shell 复制代码
    kubectl delete domain alice
  2. 检查 Domain 是否已被清理。

    shell 复制代码
    kubectl get domain alice
    Error from server (NotFound): domains.kuscia.secretflow "alice" not found
  3. 检查 Domain 相关的 Namespace, ResourceQuota 资源是否还存在。

    shell 复制代码
    kubectl get namespace alice
    NAME    STATUS   AGE
    alice   Active   20m
    
    kubectl get resourcequota -n alice
    NAME                  AGE    REQUEST      LIMIT
    resource-limitation   20m    pods: 0/200
  4. 检查 Domain 相关的 Namespace 是否已添加标记被清理的标签。

    shell 复制代码
    kubectl get namespace alice -L kuscia.secretflow/deleted
    NAME    STATUS   AGE   DELETED
    alice   Active   20m   true

参考

下面以 domain-template 模版为例,介绍 Domain 所包含的完整字段。

yaml 复制代码
apiVersion: kuscia.secretflow/v1alpha1
kind: Domain
metadata:
  name: domain-template
spec:
  role: partner
  cert: base64<certificate>
  interConnProtocols:
  - kuscia
  resourceQuota:
    podMaxCount: 100
status:
  nodeStatuses:
    - lastHeartbeatTime: "2023-04-06T08:49:14Z"
      lastTransitionTime: "2023-04-04T12:20:40Z"
      name: 809406b513d3
      status: Ready
      version: e9a8013

Domain metadata 的子字段详细介绍如下:

  • name:表示隐私计算节点 Domain 的名称,当前示例为 domain-template 。相应地,Kuscia 控制器会创建名称和 Domain 同名的 domain-template Namespace 资源。在 Kuscia 中,通过 Namespace 资源对不同机构用户进行资源隔离。

Domain spec 的子字段详细介绍如下:

  • role:表示隐私计算节点 Domain 的角色,默认为""。支持两种取值:partner""
    • partner:表示外部节点,用在点对点组网模式下的协作方节点。 点对点组网模式下,需要在任务调度方的集群中创建协作方的 Domain,在创建该 Domain 时,需要将 role 的值设置为 partner
    • "":表示内部节点。
  • cert:表示 BASE64 编码格式的隐私计算节点证书,该证书是配置文件中的 domainKeyData 私钥产生的,可以通过这里的命令生成。在中心化模式场景不需要填充该字段。
  • interConnProtocols:表示外部隐私计算节点支持的互联互通作业协议类型,默认为 ""。支持两种取值:kusciabfia 。当前该字段只支持配置一种协议,若配置多个协议,则会选择第一个协议作为互联互通作业的协议类型。未来会支持多种协议。
    • kuscia:表示该外部节点参与隐私计算任务时,会使用互联互通蚂蚁 kuscia 协议运行隐私计算任务。
    • bfia:表示该外部节点参与隐私计算任务时,会使用互联互通银联 bfia 协议运行隐私计算任务。
  • resourceQuota.podMaxCount:表示 Domain 所管理的隐私计算节点 Namespace 下所允许创建的最大 Pod 数量,当前示例为 100。相应地,Kuscia 控制器会在 domain-template Namespace 下创建名称为 resource-limitation 的 ResourceQuota 资源。

Domain status 的子字段详细介绍如下:

  • nodeStatuses:表示隐私计算节点 Domain 下所有 Kuscia Agent 的状态信息。
    • nodeStatuses[].lastHeartbeatTime:表示 Kuscia Agent 最近一次上报心跳的时间。
    • nodeStatuses[].lastTransitionTime:表示 Kuscia Agent 最近一次发生更新的时间。
    • nodeStatuses[].name:表示 Kuscia Agent 的名称。
    • nodeStatuses[].status:表示 Kuscia Agent 的状态。支持两种取值 ReadyNotReady
      • Ready:表示 Kuscia Agent 状态正常。
      • NotReady:表示 Kuscia Agent 状态异常。
    • nodeStatuses[].version:表示 Kuscia Agent 的版本。
相关推荐
踏浪无痕5 小时前
JobFlow已开源:面向业务中台的轻量级分布式调度引擎 — 支持动态分片与延时队列
后端·架构·开源
豆豆6 小时前
开源企业网站源码免费网站源码. 网站源码下载
开源·cms·单点登录·网站源码·网页源码·源码建站·低代码品平台
脑极体6 小时前
我即洪流:中国开源三十年
开源
sbjdhjd7 小时前
开源分享 | 超浪漫 3D 圣诞树立体动画(附零基础使用教程)
3d·青少年编程·开源·html·节日
明月56610 小时前
github开源项目推荐--drawnix(开源白板工具)
开源·github
simplify2010 小时前
SWEDeepDiver:从哪里来,去往何处
开源·llm
十六年开源服务商10 小时前
WordPress视频播放增强定制开发解决方案
开源
梦帮科技12 小时前
Scikit-learn特征工程实战:从数据清洗到提升模型20%准确率
人工智能·python·机器学习·数据挖掘·开源·极限编程
时光追逐者12 小时前
一个基于 .NET 开源、功能强大的分布式微服务开发框架
分布式·微服务·开源·c#·.net·.net core
weixin_4624462313 小时前
【原创实践】开源扣子 coze-studio 安装本地插件配置:接入“今日诗词”API(获取所有古诗词)
开源·开源扣子