打開鏈接即可點亮社區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 同名的aliceNamespace 資源。在 Kuscia 中,通過 Namespace 資源對不同機構用户進行資源隔離。-
.spec.role:表示隱私計算節點 Domain 的角色,默認為""。支持兩種取值:partner和""。partner:表示外部節點,用在點對點組網模式下的協作方節點。點對點組網模式下,需要在任務調度方的集羣中創建協作方的 Domain,在創建該 Domain 時,需要將role的值設置為partner。"":表示內部節點。
.spec.cert:表示 BASE64 編碼格式的隱私計算節點證書,該證書是配置文件中的domainKeyData私鑰產生的,可以通過這裏的命令生成。在中心化模式場景不需要填充該字段。.spec.resourceQuota.podMaxCount:表示 Domain 所管理的隱私計算節點命名空間(Namespace)下所允許創建的最大 Pod 數量,當前示例為100。
-
運行以下命令創建 Domain。
kubectl apply -f alice-domain.yaml -
檢查 Domain 是否創建成功。
kubectl get domain alice NAME AGE alice 3s -
檢查 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。
-
運行以下命令更新 Domain。
kubectl apply -f alice-domain.yaml -
檢查 Domain 相關的 ResourceQuota 資源是否更新成功。
kubectl get resourcequota -n alice NAME AGE REQUEST LIMIT resource-limitation 4m pods: 0/200
清理 Domain
下面以 Domain alice 為例,介紹清理 Domain。
-
運行以下命令清理 Domain。
kubectl delete domain alice -
檢查 Domain 是否已被清理。
kubectl get domain alice Error from server (NotFound): domains.kuscia.secretflow "alice" not found -
檢查 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 -
檢查 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-templateNamespace 資源。在 Kuscia 中,通過 Namespace 資源對不同機構用户進行資源隔離。
Domain spec 的子字段詳細介紹如下:
-
role:表示隱私計算節點 Domain 的角色,默認為""。支持兩種取值:partner和""。partner:表示外部節點,用在點對點組網模式下的協作方節點。 點對點組網模式下,需要在任務調度方的集羣中創建協作方的 Domain,在創建該 Domain 時,需要將role的值設置為partner。"":表示內部節點。
cert:表示 BASE64 編碼格式的隱私計算節點證書,該證書是配置文件中的domainKeyData私鑰產生的,可以通過這裏的命令生成。在中心化模式場景不需要填充該字段。-
interConnProtocols:表示外部隱私計算節點支持的互聯互通作業協議類型,默認為""。支持兩種取值:kuscia和bfia。當前該字段只支持配置一種協議,若配置多個協議,則會選擇第一個協議作為互聯互通作業的協議類型。未來會支持多種協議。kuscia:表示該外部節點參與隱私計算任務時,會使用互聯互通螞蟻kuscia協議運行隱私計算任務。bfia:表示該外部節點參與隱私計算任務時,會使用互聯互通銀聯bfia協議運行隱私計算任務。
resourceQuota.podMaxCount:表示 Domain 所管理的隱私計算節點 Namespace 下所允許創建的最大 Pod 數量,當前示例為100。相應地,Kuscia 控制器會在domain-templateNamespace 下創建名稱為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 的狀態。支持兩種取值Ready、NotReady。Ready:表示 Kuscia Agent 狀態正常。NotReady:表示 Kuscia Agent 狀態異常。
nodeStatuses[].version:表示 Kuscia Agent 的版本。