前言

​重点提示​

1、KubeFate 1.5.0版本 目前不支持Mac系统
2、K8S不支持在虚拟机上 VMware Fusion 专业版 8.1.1运行

不要按照这篇文章使用虚拟机安装,但安装步骤是正确的

​使用MiniKube部署联邦学习Fate的详细过程-上篇​

我亲身实践了好久 都没能在虚拟机Centos上跑起来
即使虚拟机配置6核10G都跑不起来
这是版本不兼容导致的
我开了一台阿里云服务器8核16G内存100G的服务器
20分钟搞定

​阿里云服务器​

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net

因为我是临时使用 所以开了一个按流量付费的服务器
大家也可以根据自己的情况开一周的或一个月的

部署Docker

上篇文章 具体说过(安装最新版本的docker和异常处理方式)
这里简单介绍下如何安装指定版本的docker

​查看服务器支持的docker版本​

yum list docker-ce --showduplicates | sort -r

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_02

​安装指定版本​

不要超过19.03版本

yum -y install docker-ce-3:19.03.15

​启动dokcer​

systemctl daemon-reload
service docker restart
systemctl enable docker.service

部署miniKube

和上篇文章安装的方式一样 不再赘述

​区别1-启动方式​

# image-repository 指定镜像从阿里云上下载
# alsologtostderr 该参数可以看到详细的启动日志

minikube start --vm-driver=none --image-repository=registry.aliyuncs.com/google_containers --alsologtostderr -v=8

​区别2-二进制文件版本号​

1.5.0是目前最新版

链接:https://pan.baidu.com/s/14Xqf01m2lNZNrFhyJaV_Kg 密码:r4ri

​k8s启动成功的状态​

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_03Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_命名空间_04

​启用ingress服务​

minikube addons enable ingress

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_命名空间_05

部署KubeFATE服务

​解压kubefate压缩包​

tar -xzf ./kubefate-k8s-1.5.0.tar.gz

​查看文件情况​

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_命名空间_06

​配置minikube​

chmod +x ./kubefate && sudo mv ./kubefate /usr/bin

​查看minikube版本号​

kubefate version

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_07

​下载镜像依赖包​

docker load < ./kubefate-v1.2.0.docker

​创建 kube-fate 的命名空间以及账号​

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_08

​使用网易云镜像仓库​

sed 's/mariadb:10/hub.c.163.com\/federatedai\/mariadb:10/g' kubefate.yaml > kubefate_163.yaml
sed 's/registry: ""/registry: "hub.c.163.com\/federatedai"/g' cluster.yaml > cluster_163.yaml

​在 kube-fate 命名空间里部署 KubeFATE 服务​

kubectl apply -f ./kubefate_163.yaml

​KubeFATE服务是否部署好​

kubectl get all,ingress -n kube-fate

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_命名空间_09

KubeFATE 的服务就已经部署好并正常运行

​添加 kubefate.net 到 hosts 文件​

# 在云服务器上执行

sudo -- sh -c "echo \"47.117.116.243 kubefate.net\" >> /etc/hosts"

​验证是否生效​

ping -c 2 kubefate.net

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_10

​查看KubeFATE 服务版本​

kubefate version

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_11

使用KubeFATE安装FATE

安装两联盟方,ID 分别 9999 与 10000
真实情况 这两方应该是完全独立、隔绝的组织
为了模拟现实情况 需要先为他们在Kubernetes上创建各自独立的命名空间(namespace)

​创建命名空间​

# 用来部署9999
kubectl create namespace fate-9999
# 用来部署10000
kubectl create namespace fate-10000

​准备各自的集群配置文件​

cp ./cluster_163.yaml fate-9999.yaml && cp ./cluster_163.yaml fate-10000.yaml
  • fate-9999.yaml

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_命名空间_12

  • fate-10000.yaml

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_13

192.168.100.123需要替换成你的MiniKube 机器地址

​安装fate集群​

kubefate cluster install -f ./fate-9999.yaml
kubefate cluster install -f ./fate-10000.yaml

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_14

KubeFATE 会创建两个任务去分别部署两个FATE集群

​查看任务状态​

cd /home/k8s
watch kubefate cluster ls

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_15

这个步骤需要到网易云镜像仓库去下载约 10GB 的镜像

验证FATE的部署

​访问集群​

kubefate cluster describe b1865111-4a7d-4159-aeb9-4c482262517c

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_16Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_.net_17

Info->dashboard里包含

  • Jupyter Notebook 的访问地址
9999.notebook.kubefate.net
是让数据科学家进行建模分析的平台
已经集成了FATE-Clients
  • FATEBoard 的访问地址
9999.fateboard.kubefate.net
通过FATEBoard 来查询当前训练的状态
fate-10000的 Jupyter Notebook 和 FATEBoard 地址分别是
10000.notebook.kubefate.net
10000.fateboard.kubefate.net

​在浏览器访问 FATE 集群的机器上配置相关的Host信息​

# 在本地电脑上操作

sudo vim /etc/hosts

sudo -- sh -c "echo \"47.117.116.243 9999.notebook.kubefate.net\" >> /etc/hosts"

sudo -- sh -c "echo \"47.117.116.243 9999.fateboard.kubefate.net\" >> /etc/hosts"

sudo -- sh -c "echo \"47.117.116.243 10000.notebook.kubefate.net\" >> /etc/hosts"

sudo -- sh -c "echo \"47.117.116.243 10000.fateboard.kubefate.net\" >> /etc/hosts"

​4个Dashboards​

Kubernetes运行字节联邦学习开源框架KubeFate1.5.3版本-中篇_docker_18

我是本地配置'假'域名转发通过公网访问阿里云服务器
所以会提示域名未备案
kubefate在本地启动或内网环境内 不经过公网环境 则可以访问

后记

截止目前 把K8S环境和KubeFate多方集群环境搭建起来了
后续文章介绍下 如何使用该KubeFate做联邦任务以及Fate开源框架实现原理及运行流程简介