博客 / 詳情

返回

【隱語Secretflow】一文速通隱私計算節點Domain

打開鏈接即可點亮社區Star,照亮技術的前進之路。

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

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。

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。

    kubectl apply -f alice-domain.yaml
  2. 檢查 Domain 是否創建成功。

    kubectl get domain alice
    NAME    AGE
    alice   3s
  3. 檢查 Domain 相關的 Namespace, ResourceQuota 資源是否創建成功。

    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。

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

在該示例中:

  • .spec.resourceQuota.podMaxCount 的值調整為 200
  1. 運行以下命令更新 Domain。

    kubectl apply -f alice-domain.yaml
  2. 檢查 Domain 相關的 ResourceQuota 資源是否更新成功。

    kubectl get resourcequota -n alice
    NAME                  AGE   REQUEST      LIMIT
    resource-limitation   4m    pods: 0/200

清理 Domain

下面以 Domain alice 為例,介紹清理 Domain。

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

    kubectl delete domain alice
  2. 檢查 Domain 是否已被清理。

    kubectl get domain alice
    Error from server (NotFound): domains.kuscia.secretflow "alice" not found
  3. 檢查 Domain 相關的 Namespace, ResourceQuota 資源是否還存在。

    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 是否已添加標記被清理的標籤。

    kubectl get namespace alice -L kuscia.secretflow/deleted
    NAME    STATUS   AGE   DELETED
    alice   Active   20m   true

參考

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

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 的版本。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.