引言:10月31日,FATE v1.1版本正式发布。在这个版本中,FATE联合VMware中国研发开放创新中心云原生实验室的团队一起搞了个“大事”——发布了KubeFATE项目,通过把FATE的所有组件用容器的形式封装,实现了使用Docker Compose或Kubernetes(Helm Charts)来部署。这则特邀分享的内容将为大家介绍,如何离线安装kubernetes和FATE。
将kubernetesfate1.1.tar.gz压在/data/projects/目录;
mkdir -p /data/projects/
mv kubernetes-fate-1.1.tar.gz /data/projects/
cd /data/projects/ && tar -zxvf kubernetes-fate-1.1.tar.gz
yum install kubernetes-fate/tools/httpd-* -y
ln -snf /data/projects/kubernetes-fate /var/www/html/k8s-fate
sed -i 's/Listen 80/Listen 8888/g' /etc/httpd/conf/httpd.conf
service httpd start
yum源地址即为:http://xxxx:8888/k8sfate/
配置和执行/data/projects/kubernetesfate/tools/initenv.sh脚本,主要配置项包括:
eth_name=eth1 //网卡名称
yum_repo_addr="http://10.254.96.13:8888/k8s-fate" //替换为搭建的yum源地址
docker0_ip_pool="172.17.42.1/16" //docker0默认网段
cd /data/projects/kubernetes-fate/k8s-images
for image_name in `ls ./`; do docker load < ${image_name};done
kubeadm init --pod-network-cidr=172.27.42.0/16 --servicecidr=172.37.42.0/16
# pod-network-cidr同flannel里配置
该命令若执行成功,备份输出的kubeadm join整个命令。
在扩容的worker节点上,执行备份的kubeadm join命令进行扩容,比如:
kubeadm join 10.215.129.203:6443 --token 20zaze.grkoxz805rse8fye \
--discovery-token-ca-cert-hash sha256:20c2db44c08520595a69cbbdfc4158a
de634cb8d251e51f2d92859b0f0f0f5a2
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f /data/projects/kubernetes-fate/kube-flannel.yml
kubectl get nodes #确认所有节点是否ready
cd /data/projects/kubernetes-fate/fate-images/
for image_name in `ls ./*.tar`; do docker load < ${image_name};done
kubectl label nodes ${node} fedai.hostname=fate-node-0 # 0..n
kubectl get nodes --show-labels
/data/projects/kubernetesfate/k8sdeploy/kube.cfg
#!/bin/bash
partylist=(10000 9999) # party ID,必须是数字;host role ID为9999,Guest
为10000
# 不同party对应proxy地址,由于用了NodePort,替换为party所在k8s任意node节点IP即可
partyiplist=(10.254.96.15:30010 100.76.22.203:30009)
# host role上k8s fate-exchange地址
exchangeip=100.76.22.203:30000
# 配置组件在k8s node的分布,使用node标签
eggList=(fate-node-0 fate-node-1 fate-node-2)
federation=fate-node-0
metaService=fate-node-0
mysql=fate-node-1
proxy=fate-node-1
python=fate-node-1
redis=fate-node-2
roll=fate-node-2
servingServer=fate-node-2
# 拷贝helm执行文件
cp /data/projects/kubernetes-fate/tools/helm /usr/bin/
# 创建rbac服务
kubectl create -f /data/projects/kubernetes-fate/rbac-config.yaml
kubectl create -f /data/projects/kubernetes-fate/helm.yaml
# helm init
helm init --upgrade --service-account tiller --stable-repo-url http://10.
254.96.13:8888/k8s-fate/
cd /data/projects/kubernetes-fate/k8s-deploy && bash + create-helm-deplo
y.sh
在/etc/kubernetes/manifests/kubeapiserver.yaml中,增加
- --service-node-port-range=8080-65535
cd /data/projects/kubernetes-fate/k8s-deploy
helm install --name=fate-9999 --namespace=fate-9999 ./fate-9999/
helm install --name=fate-exchange --namespace=fate-exchange ./fate-exchan
ge/
若guest 使用不同的k8s集群,需执行部署host role party以外其它步骤
cd /data/projects/kubernetes-fate/k8s-deploy
helm install --name=fate-10000 --namespace=fate-10000 ./fate-10000/
由于默认用了8080 nodeport作为fateboard访问地址,可以直接访问:
http:///${worker_ip}:8080/
由于使用了hostPath,需将/data/projects/kubernetesfate/examples拷贝到每个k8s worker节点的/data/projects/fate/python/下
kubectl exec -it -c python svc/fateflow bash -n fate-10000
source /data/projects/python/venv/bin/activate
cd /data/projects/fate/python/examples/toy_example/
python run_toy_example.py 10000 9999 1
kubeadm reset && iptables -F && iptables -t nat -F && iptables -t mangle
-F && iptables -X && rm -rf $HOME/.kube
从master拷贝/etc/kubernetes/admin.conf文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果master节点上也部署fate组件
kubectl taint nodes ${master_hostname} node-role.kubernetes.io/master:NoS
chedule
本文由FATE社区特邀作者张超-腾讯高级工程师输出贡献。
原创内容发布于FATE社区,未经许可,禁止转载。