GraphScope 集群部署

2021-12-06

GraphScope 集群部署

1 k8s集群搭建

大致步骤如下:

  1. 安装docker。在ubuntu上,可以简单的通过命令sudo apt install docker.io来安装。
  2. 安装kubelet、kubeadm、kubectl。由于国内源无法访问,可能需要添加镜像,比如:
tee /etc/apt/sources.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
  1. 安装网络插件。如Calico。

以上过程可以参考 http://docs.tianshu.org.cn/docs/setup/deploy-kubernetes-cluster。文档中提供了一键脚本快速部署(适用于Ubuntu16.04和Ubuntu18.04),可以通过https://pan.baidu.com/s/1c89VAq_1qPBf_5URqSkBdw提取码wpwb获取。
获取之后

unzip dubheDeployScriptfile.zip
cd dubheDeployScriptfile/k8s1.16.2-ubuntu/

配置base.config

# 主节点(master节点)IP地址
masterip="172.16.123.1"

# 过滤IP段,用于过滤得到服务器的IP地址
ip_segment="172.16.123"

# k8s版本
k8s_version="v1.16.2"

# root用户密码,请设置k8s集群所有服务器root用户密码为统一密码
root_passwd="abcdefghijklmn"

# 集群所有节点ip,有几台填几台
hostip=(
172.16.123.1
172.16.123.2
172.16.123.3
)
#以下两项会自动生成,不用填写!
tocken=
sha_value=

然后运行

bash k8s1.16.2.sh

运行方式基本按照文档中说明,其中有两点需要注意:

  1. 在非主节点上都开启ssh的root访问权限,并在base.config中配置密码。这一步主要是拷贝apt-key.gpg base.config node_install_k8s.sh del_kube.sh ssh_trust_init.exp ssh_trust_add.exp这几个文件到worker节点。如果有其它方式拷贝,也可以不管,到这一步,master节点的集群基本部署成功。其中base.config中的保存了主节点的token和sha_value,这两个值对worker节点加入集群至关重要,取值样例如下:
token=s52vwv.gdx1qymhrdx8v5uq
sha_value=88c78df7457c1f74e065fbedd9ddee967cc4a4e4dd003e69f9d64374e3e5d903
  1. 如果多次运行脚本,base.config中的token和sha_value会被反复串接,此时在worker节点运行会无法加入master节点。每次重新运行脚本要把base.config中的token和sha_value清空。即使串接了,也能识别出来,只是要手动加入,当前主节点的token和sha_value应分别为前23位(以 . 号分隔)和前64位。

如果添加了新的机器,在环境都已配置好的情况下(运行脚本nodenode_install_k8s.sh即可),单纯加入集群可以使用以下命令:

kubeadm join 172.16.125.100:6443 --token 8urlva.75zrerl6uctfenec \
    --discovery-token-ca-cert-hash sha256:c462c05da6c3685a334b1b1743d4d9b30a38b78208c338f03f5e7d67befaf8bb

注意token和sha256都要替换成对应的master节点的token和sha256。

2 拉取graphscope镜像

这个GraphScope提供的官方安装教程没有说明,在其一键安装脚本里倒有体现(这个脚本不太好用,亲测没有安装成功过)。这个主要影响graphscope创建会话的时候,比如

import graphscope
graphscope.set_option(show_log=True)
sess = graphscope.session()

在没有提前拉取镜像的情况下,创建session的时候就会卡住或者出错,因为创建的时候默认是会去拉取docker镜像的, 而这个镜像很大(有8.39GB),网络条件不好的情况下很难拉取成功。所以最好提前拉取:

docker pull registry.cn-hongkong.aliyuncs.com/graphscope/graphscope:0.8.0
docker pull quay.io/coreos/etcd:v3.4.13

0.8.0是安装的graphscope版本号,可以通过命令python -c "import graphscope; print(graphscope.__version__)"获得。

如果是用kind创建的虚拟集群,还要运行以下命令:

kind load docker-image registry.cn-hongkong.aliyuncs.com/graphscope/graphscope:0.8.0
kind load docker-image quay.io/coreos/etcd:v3.4.13