【隐语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 的版本。
相关推荐
世人万千丶21 小时前
Flutter 框架跨平台鸿蒙开发 - 恐惧清单应用
学习·flutter·华为·开源·harmonyos·鸿蒙
AI_零食1 天前
Flutter 框架跨平台鸿蒙开发 - 孤独指数应用
学习·flutter·开源·harmonyos
芯智工坊1 天前
第13章 Mosquitto监控与日志管理
前端·网络·人工智能·mqtt·开源
扬帆破浪1 天前
开源的WPS AI文档编审软件适用场景:察元 AI 文档助手
人工智能·开源
扬帆破浪1 天前
麒麟系统安装察元 WPS AI 文档助手:免费、开源、离线部署说明
人工智能·开源·wps
搜佛说1 天前
01-第1章-概述与快速开始
物联网·golang·开源·软件工程·边缘计算·嵌入式实时数据库
2301_822703201 天前
开源鸿蒙跨平台Flutter开发:跨端图形渲染引擎的类型边界与命名空间陷阱:以多维雷达图绘制中的 dart:ui 及 StrokeJoin 异常为例
算法·flutter·ui·开源·图形渲染·harmonyos·鸿蒙
2301_822703201 天前
鸿蒙flutter框架Error: 00625004 SymLink Dir Failed解决方案
flutter·华为·开源·harmonyos·鸿蒙
扬帆破浪1 天前
免费开源的WPS AI 插件,离线安装、多系统与内网模型
人工智能·开源·wps
世人万千丶1 天前
Flutter 框架跨平台鸿蒙开发 - 嫉妒分析器应用
学习·flutter·华为·开源·harmonyos·鸿蒙