FATE实战:腾讯高级工程师揭秘,快速离线安装kubernetes和FATE

引言:10月31日,FATE v1.1版本正式发布。在这个版本中,FATE联合VMware中国研发开放创新中心云原生实验室的团队一起搞了个“大事”——发布了KubeFATE项目,通过把FATE的所有组件用容器的形式封装,实现了使用Docker Compose或Kubernetes(Helm Charts)来部署。这则特邀分享的内容将为大家介绍,如何离线安装kubernetes和FATE。

准备yum源

  • 准备资源包

kubernetes­fate­1.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
  • 搭建httpd服务器
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/k8s­fate/

机器初始化(所有节点)

配置和执行/data/projects/kubernetes­fate/tools/init­env.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默认网段

安装kubernetes

导入镜像

cd /data/projects/kubernetes-fate/k8s-images
for image_name in `ls ./`; do docker load < ${image_name};done

kubeadm创建集群

  • 初始化
kubeadm init --pod-network-cidr=172.27.42.0/16 --servicecidr=172.37.42.0/16
# pod-network-cidr同flannel里配置

该命令若执行成功,备份输出的kubeadm join整个命令。

  • 扩容worker节点

在扩容的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

安装flannel

kubectl apply -f /data/projects/kubernetes-fate/kube-flannel.yml

集群检查

kubectl get nodes #确认所有节点是否ready

安装fate

环境准备

  • 导入fate镜像(所有节点)
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
  • 配置party
/data/projects/kubernetes­fate/k8s­deploy/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
# 拷贝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/
  • 生成party资源
cd /data/projects/kubernetes-fate/k8s-deploy && bash + create-helm-deplo
y.sh
  • k8s master去掉8080端口限制(8080用于fateboard访问)

在/etc/kubernetes/manifests/kube­apiserver.yaml中,增加

- --service-node-port-range=8080-65535

部署host role party

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 role party

若guest 使用不同的k8s集群,需执行部署host role party以外其它步骤

cd /data/projects/kubernetes-fate/k8s-deploy
helm install --name=fate-10000 --namespace=fate-10000 ./fate-10000/

example测试

  • fateboard地址

由于默认用了8080 nodeport作为fateboard访问地址,可以直接访问:

http:///${worker_ip}:8080/

  • 准备example数据

由于使用了hostPath,需将/data/projects/kubernetes­fate/examples拷贝到每个k8s worker节点的/data/projects/fate/python/

  • 执行example任务
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

附录

  • 重置k8s集群
kubeadm reset && iptables -F && iptables -t nat -F && iptables -t mangle
-F && iptables -X && rm -rf $HOME/.kube
  • 非root用户使用kubectl命令

从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
  • k8s master去掉污点标记

如果master节点上也部署fate组件

kubectl taint nodes ${master_hostname} node-role.kubernetes.io/master:NoS
chedule

本文由FATE社区特邀作者张超-腾讯高级工程师输出贡献。

原创内容发布于FATE社区,未经许可,禁止转载。

发布了21 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45439861/article/details/103715209