- 本文作者系VMware中国研发中心研发工程师 马陈龙
目标
本文将介绍如何使用kubefate在两个kubernetes集群上部署互通的两个FATE。这两个FATE可以完成各种联邦学习的任务。
完成后将会得到下图的结构:
先决条件
两个独立的kubernetes集群 v1.16.0+;
两个集群都可以连接互联网也可以互通;
两个部署机器,分别可以执行两个集群的kubectl命令;
两个kubernetes都已经部署了ingress-controller ;
本教程的两个kubernetes集群我们分别称为【A集群】和【B集群】
部署的两个FATE实例分别称为【PartyA】和【PartyB】
开始
检查集群
A集群的信息
[deploy-A]$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready master 191d v1.17.3 192.168.10.1 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.5
node-0 Ready <none> 191d v1.17.3 192.168.10.2 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.3
node-1 Ready <none> 191d v1.17.3 192.168.10.3 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.3
B集群的信息
[deploy-B]$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready master 191d v1.17.3 192.168.9.1 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.5
node-0 Ready <none> 191d v1.17.3 192.168.9.2 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.5
node-1 Ready <none> 191d v1.17.3 192.168.9.3 <none> CentOS Linux 7 (Core) 3.10.0-1062.12.1.el7.x86_64 docker://19.3.5
下载kubefate
Kubefate 的开源地址https://github.com/FederatedAI/KubeFATE
打开链接https://github.com/FederatedAI/KubeFATE/releases
Kubefate是容器化部署fate的最佳实践,项目更新较快,建议使用最新的releases。
下载 The KubeFATE release pack ,得到kubefate-k8s-v1.3.0-a.tar.gz这个文件,解压下载的这个文件,得到一个可执行文件和四个yaml文件
A集群解压
[deploy-A]$ tar -zxvf kubefate-k8s-v1.3.0-a.tar.gz
kubefate
cluster.yaml
config.yaml
kubefate.yaml
rbac-config.yaml
B集群解压
[deploy-B]$ tar -zxvf kubefate-k8s-v1.3.0-a.tar.gz
kubefate
cluster.yaml
config.yaml
kubefate.yaml
rbac-config.yaml
在kubernetes上安装kubefate server
分别创建kubefate server的namespace 和RBAC权限
在A集群和B集群分别部署rbac-config.yaml
A集群
[deploy-A]$ kubectl apply -f ./rbac-config.yaml
namespace/k