使用heketi在kubernetes中安装glusterfs
环境及版本说明:centso7.6k8s 1.17glusterfs 7.1集群只有三台机器三台即作为客户端,也作为服务端。加载内核模块(所有机器都要执行)modprobedm_snapshotmodprobedm_mirrormodprobedm_thin_pool添加一个硬盘,或者分一个新的分区(所有机器都要执行)fdisk /dev/sdb…(不能格...
环境及版本说明:
centso7.6
k8s 1.17
glusterfs 7.1
集群只有三台机器
三台即作为客户端,也作为服务端。
加载内核模块(所有机器都要执行)
modprobe dm_snapshot
modprobe dm_mirror
modprobe dm_thin_pool
添加一个硬盘,或者分一个新的分区(所有机器都要执行)
fdisk /dev/sdb
…
(不能格式化)
添加gluster的源(所有机器都要执行)
vim /etc/yum.repos.d/Gluster7.1-Base.repo
[centos-gluster]
name=CentOS-$releasever - Gluster 7 (Long Term Maintanance)
baseurl=http://mirror.centos.org/$contentdir/$releasever/storage/$basearch/gluster-7/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
[centos-gluster7-test]
name=CentOS-$releasever - Gluster 7 Testing (Long Term Maintenance)
baseurl=http://buildlogs.centos.org/centos/$releasever/storage/$basearch/gluster-7/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
yum clean all
yum makecache
yum repolist all
安装相应的glusterfs的客户端 命令行工具及fuse等模块(所有机器都要执行)
vim test.txt
glusterfs-api-7.1-1.el7.x86_64
glusterfs-server-7.1-1.el7.x86_64
glusterfs-libs-7.1-1.el7.x86_64
glusterfs-client-xlators-7.1-1.el7.x86_64
glusterfs-fuse-7.1-1.el7.x86_64
glusterfs-7.1-1.el7.x86_64
glusterfs-cli-7.1-1.el7.x86_64
while read line; do yum install -y $line;done <test.txt
yum install -y git
下载git库
mkdir -p /work/deploy/foundataion/
cd /work/deploy/foundataion/
git clone https://github.com/gluster/gluster-kubernetes.git
客户端版本 rpm -qa|grep glusterfs 所有的包的版本要一致,且要和服务端保持一致
cat glusterfs-daemonset.yaml|grep image 看一下这个镜像的版本,运行起来以后exec进入后执
行 gluster --version 查看版本。要和上面yum安装的那些包要保持版本一致。
修改相应yaml文件的版本
从git库克隆下载下来的文件 下面这三个文件需要改deployment和daemonset的 apiversion的版本 为apps/v1
sed -i 's/extensions\/v1beta1/apps\/v1/g' $(grep "v1beta1" -rl .)
deploy-heketi-deployment.yaml
glusterfs-daemonset.yaml
heketi-deployment.yaml
添加相应的选择标签
从git库克隆下载下来的文件 下面这三个文件需要添加相应的selector标签
创建命名空间
kubectl create ns runsdata
修改topology.json,根据自己实际情况修改
编辑topology.json文件,定义好gluster节点
{
"clusters": [
{
"nodes": [
{
"node": {
"hostnames": {
"manage": [
"172.16.5.150"
],
"storage": [
"172.16.5.150"
]
},
"zone": 1
},
"devices": [
"/dev/sdb1"
]
},
{
"node": {
"hostnames": {
"manage": [
"172.16.5.151"
],
"storage": [
"172.16.5.151"
]
},
"zone": 2
},
"devices": [
"/dev/sdb1"
]
},
{
"node": {
"hostnames": {
"manage": [
"172.16.5.152"
],
"storage": [
"172.16.5.152"
]
},
"zone": 3
},
"devices": [
"/dev/sdb1"
]
}
]
}
]
}
提前把镜像拉好(每台机器都提前拉好)
docker pull gluster/gluster-centos:latest
docker pull heketi/heketi:dev
脚本修改
由于新版本kubectl get pod 没有–show-all选项了,首先要修改gk-deploy脚本,把 C L I g e t p o d − − n o − h e a d e r s − − s h o w − a l l − − s e l e c t o r = " h e k e t i " 改 成 {CLI} get pod --no-headers --show-all --selector="heketi"改成 CLIgetpod−−no−headers−−show−all−−selector="heketi"改成{CLI} get pod --no-headers -n ${NAMESPACES} --selector=“heketi” 这个脚本里面的所有带有–show-all都要删除。
并且修改heketi.json.template中填写相应的key
"admin" : {
"key" : "runsdata-gf-admin"
},
"_user" : "User only has access to /volumes endpoint",
"user" : {
"key" : "runsdata-gf-user"
}
把下面的命令放到run_deploy.sh 里面方便执行
#!/bin/bash
./gk-deploy -g --admin-key runsdata-gf-admin --user-key runsdata-fs-user -n runsdata -y
上面脚本里面的命名空间用户和key需要和上面创建的命名空间以及template文件中设置的要对应
chmod +x run_deploy.sh
./run_deploy.sh
如果上面的过程中有报错,需要重来,需要按下面的步骤做完后重新执行脚本
k8s master执行
kubectl delete -f .
kubectl delete serviceaccount heketi-service-account -n runsdata
kubectl delete clusterrolebindings heketi-sa-view
kubectl delete secret heketi-config-secret -n runsdata
kubectl delete endpoints heketi-storage-endpoints -n runsdata
kubectl delete services heketi-storage-endpoints -n runsdata
kubectl delete ns runsdata
并且删除每个节点上已经打好的标签:kubectl label nodes 172.16.5.x storagenode-
rm -rf /var/lib/heketi/ (每台机器都要删除)
rm -rf /var/lib/glusterd/ (每台机器都要删除)
上面这些步骤做完了才可以进行下面的vg删除,不然vg会自动恢复
vgs
vgremove xxxx 一路确认按y
然后重新创建命名空间,重新执行run_deploy.sh脚本
最终结果
踩了无穷无尽的坑,终于见到了下面这个结果。泪奔
更多推荐
所有评论(0)