您好,登錄后才能下訂單哦!
這篇文章主要介紹“GlusterFS在Kubernetes中怎么應用”,在日常操作中,相信很多人在GlusterFS在Kubernetes中怎么應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”GlusterFS在Kubernetes中怎么應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
背景介紹
首先需要大家已經(jīng)成功搭建好了Kubernetes集群的實驗環(huán)境
想在生產(chǎn)環(huán)境里面使用glusterfs做storageclass,本文就可以保證你完成。
本案例中,實驗環(huán)境與k8s集群使用同樣的主機地址,實際生產(chǎn)案例中請分開部署。三個虛擬機里面各新建一塊硬盤,硬盤大小均為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實戰(zhàn)】
1.磁盤類型修改
實際生產(chǎn)案例中大家的磁盤都比較大,先將磁盤類型修改為gpt。這里給大家提供一個生產(chǎn)使用的腳本。
#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH function main(){ i=3 while [ $i -lt 10 ] do j=`echo $i|awk '{printf "%c",97+$i}'` parted /dev/sd$j <<FORMAT mklabel gpt yes mkpart primary 0 -1 ignore quit FORMAT i=$(($i+1)) done } main
請大家在三臺機器上使用fdisk –l查看下新加入硬盤的編號,我這里為/dev/sdb。在三臺機器上分別進行如下操作,操作過程按照生產(chǎn)環(huán)境來。三臺機器的新加磁盤均需要做如下操作。
操作完成后檢查新加入的磁盤類型是否為gpt類型。檢測命令fdisk -l
2.磁盤格式化并掛載卷
生產(chǎn)環(huán)境在使用的時候存儲也進行了自己的規(guī)劃使用了flashcache做緩存層,大家有興趣的可以研究下存儲,我這邊實驗環(huán)境沒有使用flashcache。給大家提供一個格式化和掛載的腳本。
function mkfs(){ for i in `seq 1 12`;do if [ $i -lt 10 ] then mkfs.xfs -L brick$i -f -i size=512 /dev/mapper/flash0$i sleep 1 else mkfs.xfs -L brick$i -f -i size=512 /dev/mapper/flash$i fi done } function guazai(){ for i in `seq 1 12`;do mkdir /gluster_brick$i echo "LABEL=brick$i /gluster_brick$i xfs defaults 0 0" >> /etc/fstab done }
好了不廢話,繼續(xù)我們的實驗,格式化磁盤/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官網(wǎng)看了下glusterfs更加簡單了,安裝的命令不復雜了,n年前我安裝的時候還是3版本,偶然發(fā)現(xiàn)已經(jīng)5版本了,變化太快了,若你有興趣可把官網(wǎng)看一遍。三臺機器均為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進行操作,需要執(zhí)行如下兩條命令。
# gluster peer probe linux-node2 # gluster peer probe linux-node3
驗證是否添加成功,如下圖所示則為成功。
[root@linux-node1 ~]# gluster peer status
5.創(chuàng)建卷devops
注意生產(chǎn)中,一般使用三個副本,這里就三塊盤,里面存儲的數(shù)據(jù)是一致的,如下圖所示:
[root@linux-node1 ~]# gluster volume create devops replica 3 linux-node1:/gluster_brick1/b1 linux-node2:/gluster_brick1/b1 linux-node3:/gluster_brick1/b1 volume create: devops: success: please start the volume to access data [root@linux-node1 ~]# gluster volume start devops volume 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 -l 101
此步驟可以看到100個文件;然后查看下:
因為是三個副本,所以每個機器上已經(jīng)有了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: v1 kind: Endpoints metadata: name: glusterfs-volume subsets: - 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: v1 kind: PersistentVolume metadata: name: pv-gluster spec: capacity: storage: 5G accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle glusterfs: endpoints: "glusterfs-volume" path: "devops" readOnly: false [root@linux-node1 glusterfs]# cat pvc-demo.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-glusterfs spec: accessModes: - ReadWriteMany resources: requests: storage: 1G
使用kubectl直接創(chuàng)建好資源即可。
2.用deployment進行驗證
[root@linux-node1 glusterfs]# cat nginx-ingress-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: 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即可。
2、當存儲管理員開啟了這個參數(shù)的時候怎么辦?
# gluster volume devops quota enable # gluster volume quota devops limit-usage / 1gb
擴容完存儲之后,將我們的quota值調(diào)大,這個時候我們k8s里面的pod就可以使用大額的存儲了,不需要重啟。pv和pvc不做調(diào)整。
到此,關于“GlusterFS在Kubernetes中怎么應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。