溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GlusterFS在Kubernetes中怎么應用

發(fā)布時間:2022-01-04 17:55:29 來源:億速云 閱讀:150 作者:iii 欄目:服務器

這篇文章主要介紹“GlusterFS在Kubernetes中怎么應用”,在日常操作中,相信很多人在GlusterFS在Kubernetes中怎么應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”GlusterFS在Kubernetes中怎么應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

背景介紹

首先需要大家已經(jīng)成功搭建好了Kubernetes集群的實驗環(huán)境

想在生產(chǎn)環(huán)境里面使用glusterfs做storageclass,本文就可以保證你完成。

【Glusterfs實驗環(huán)境準備】

      本案例中,實驗環(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)】

GlusterFS在Kubernetes中怎么應用

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)境來。三臺機器的新加磁盤均需要做如下操作。

GlusterFS在Kubernetes中怎么應用

操作完成后檢查新加入的磁盤類型是否為gpt類型。檢測命令fdisk -l

GlusterFS在Kubernetes中怎么應用

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個文件;然后查看下:

GlusterFS在Kubernetes中怎么應用

因為是三個副本,所以每個機器上已經(jīng)有了100個文件,好了glusterfs的實驗就到這里。

【第二部分:在Kubernetes集群中使用】

GlusterFS在Kubernetes中怎么應用

1.將glusterfs當作pv和pvc在集群中使用

需要使用三個文件:

  1. glusterfs-endpoints.yaml 

  2. pv-demo.yaml

  3. 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>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI