GlusterFS在Kubernetes中怎么应用
这篇文章主要介绍“GlusterFS在Kubernetes中怎么应用”,在日常操作中,相信很多人在GlusterFS在Kubernetes中怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”GlusterFS在Kubernetes中怎么应用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
背景介绍
首先需要大家已经成功搭建好了Kubernetes集群的实验环境
想在生产环境里面使用glusterfs做storageclass,本文就可以保证你完成。
【Glusterfs实验环境准备】
本案例中,实验环境与k8s集群使用同样的主机地址,实际生产案例中请分开部署。三个虚拟机里面各新建一块硬盘,硬盘大小均为10g。
主机ip | 主机名 | 磁盘 | 挂载点 |
192.168.56.11 | Linux-node1.example.com | /dev/sdb | /gluster_brick1 |
192.168.56.12 | Linux-node2.example.com | /dev/sdb | /gluster_brick1 |
192.168.56.13 | Linux-node3.example.com | /dev/sdb | /gluster_brick1 |
【第一部分:Glusterfs实战】
1.磁盘类型修改
实际生产案例中大家的磁盘都比较大,先将磁盘类型修改为gpt。这里给大家提供一个生产使用的脚本。
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH function main(){i=3while [ $i -lt 10 ] doj=`echo $i|awk '{printf "%c",97+$i}'`parted /dev/sd$j <<FORMAT mklabel gptyesmkpart primary 0 -1ignorequitFORMATi=$(($i+1))done}main
请大家在三台机器上使用fdisk –l查看下新加入硬盘的编号,我这里为/dev/sdb。在三台机器上分别进行如下操作,操作过程按照生产环境来。三台机器的新加磁盘均需要做如下操作。
操作完成后检查新加入的磁盘类型是否为gpt类型。检测命令fdisk -l
2.磁盘格式化并挂载卷
生产环境在使用的时候存储也进行了自己的规划使用了flashcache做缓存层,大家有兴趣的可以研究下存储,我这边实验环境没有使用flashcache。给大家提供一个格式化和挂载的脚本。
function mkfs(){for i in `seq 1 12`;doif [ $i -lt 10 ] thenmkfs.xfs -L brick$i -f -i size=512 /dev/mapper/flash0$isleep 1elsemkfs.xfs -L brick$i -f -i size=512 /dev/mapper/flash$ifidone}function guazai(){for i in `seq 1 12`;domkdir /gluster_brick$iecho "LABEL=brick$i /gluster_brick$i xfs defaults 0 0" >> /etc/fstabdone}
好了不废话,继续我们的实验,格式化磁盘/dev/sdb1,如下所示,三台机器均进行如下操作。这里不使用卷标的可以使用uuid,否则有坑。
# mkfs.xfs -L brick1 -f -i size=512 /dev/sdb1# mkdir /gluster_brick1# echo "LABEL=brick1 /gluster_brick1 xfs defaults 0 0" >> /etc/fstab# mount -a
3.安装glusterfs
去gfs官网看了下glusterfs更加简单了,安装的命令不复杂了,n年前我安装的时候还是3版本,偶然发现已经5版本了,变化太快了,若你有兴趣可把官网看一遍。三台机器均为glusterfs的server,均需按照如下步骤进行安装:
# yum install centos-release-gluster # yum install glusterfs-server(说明如果是glsuterfs的客户端,则只需要按照glusterfs-client包即可) # systemctl enable glusterd # systemctl start glusterd
当然你也可以使用之前配置好的salt进行自动化安装。
# salt-ssh '*' cmd.run 'systemctl enable glusterd'
4.gluster peer管理
当glusterd运行起来之后在任意一台机器添加另外两个机器进信任的池子即可。这里在linux-node1进行操作,需要执行如下两条命令。
# gluster peer probe linux-node2 # gluster peer probe linux-node3
验证是否添加成功,如下图所示则为成功。
[root@linux-node1 ~]# gluster peer status
5.创建卷devops
注意生产中,一般使用三个副本,这里就三块盘,里面存储的数据是一致的,如下图所示:
[root@linux-node1 ~]# gluster volume create devops replica 3 linux-node1:/gluster_brick1/b1 linux-node2:/gluster_brick1/b1 linux-node3:/gluster_brick1/b1volume create: devops: success: please start the volume to access data[root@linux-node1 ~]# gluster volume start devopsvolume start: devops: success
6.测试glusterfs存储
[root@linux-node1 ~]# mkdir /test[root@linux-node1 ~]# mount -t glusterfs linux-node1:/devops /test[root@linux-node1 ~]# for i in `seq -w 1 100`; do echo "test" >> /test/copy-test-$i; done[root@linux-node1 ~]# ls -lA /test | wc -l101
此步骤可以看到100个文件;然后查看下:
因为是三个副本,所以每个机器上已经有了100个文件,好了glusterfs的实验就到这里。
【第二部分:在Kubernetes集群中使用】
1.将glusterfs当作pv和pvc在集群中使用
需要使用三个文件:
glusterfs-endpoints.yaml
pv-demo.yaml
pvc-demo.yaml
[root@linux-node1 glusterfs]# cat glusterfs-endpoints.yaml apiVersion: v1kind: Endpointsmetadata: name: glusterfs-volumesubsets:- addresses: - ip: 192.168.56.11 ports: - port: 20- addresses: - ip: 192.168.56.12 ports: - port: 20- addresses: - ip: 192.168.56.13 ports: - port: 20[root@linux-node1 glusterfs]# cat pv-demo.yaml apiVersion: v1kind: PersistentVolumemetadata: name: pv-glusterspec: capacity: storage: 5G accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle glusterfs: endpoints: "glusterfs-volume" path: "devops" readOnly: false[root@linux-node1 glusterfs]# cat pvc-demo.yaml kind: PersistentVolumeClaimapiVersion: v1metadata: name: pvc-glusterfsspec: accessModes: - ReadWriteMany resources: requests: storage: 1G
使用kubectl直接创建好资源即可。
2.用deployment进行验证
[root@linux-node1 glusterfs]# cat nginx-ingress-deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.13.12 ports: - containerPort: 80 volumeMounts: - name: www subPath: nginxpvc-gluster mountPath: /usr/share/nginx/html volumes: - name: www persistentVolumeClaim: claimName: pvc-glusterfs# kubectl apply -f nginx-ingress-deployment.yaml
3.自动化扩容pvc
1、当glustefs的磁盘空间够大的时候,我们使用的pv跟我们申请的大小是不一样的,上限是GFS卷的大小,若gfs存储不够,只需扩容gfs的volume即可。
当存储管理员开启了这个参数的时候怎么办?
# gluster volume devops quota enable# gluster volume quota devops limit-usage / 1gb
扩容完存储之后,将我们的quota值调大,这个时候我们k8s里面的pod就可以使用大额的存储了,不需要重启。pv和pvc不做调整。
到此,关于“GlusterFS在Kubernetes中怎么应用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341