自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

生產(chǎn)實(shí)踐:使用 GlusterFS 搭建 Kubernetes 存儲(chǔ)卷集群

云計(jì)算 云原生
k8s中的StorageClass用于定義和配置持久卷(Persistent Volume)的資源對(duì)象。StorageClass 提供了一種抽象層,使得管理員能夠定義不同類型的存儲(chǔ)和訪問(wèn)模式,并將其提供給應(yīng)用程序開(kāi)發(fā)人員使用。

我們將重點(diǎn)討論如何使用 GlusterFS 搭建一個(gè)可靠的存儲(chǔ)解決方案,以供 Kubernetes 集群使用。

1.服務(wù)器列表:

  • 172.18.1.52
  • 172.18.1.53
  • 172.18.1.54

2.安裝yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-9.repo

3.安裝glusterfs服務(wù)端

在三個(gè)節(jié)點(diǎn)分別執(zhí)行

yum -y install centos-release-gluster5.noarch
yum -y install glusterfs-server

設(shè)置開(kāi)機(jī)啟動(dòng),并啟動(dòng)

在三個(gè)節(jié)點(diǎn)分別執(zhí)行

systemctl start glusterd
 systemctl status glusterd
 systemctl enable glusterd

關(guān)閉節(jié)點(diǎn)防火墻

在三個(gè)節(jié)點(diǎn)分別執(zhí)行

systemctl stop firewalld

組建集群

在172.18.1.52服務(wù)器上執(zhí)行以下命令:

#IP地址為其他集群節(jié)點(diǎn)的IP,多個(gè)ip執(zhí)行多次
gluster peer probe  172.18.1.53  
gluster peer probe  172.18.1.54

查看集群狀態(tài)

gluster peer status

4.heketi安裝

Heketi 是一個(gè)用于管理和配置 GlusterFS 分布式文件系統(tǒng)的開(kāi)源項(xiàng)目,Heketi的主要目標(biāo)是簡(jiǎn)化 GlusterFS 的管理和配置。它提供了一個(gè) RESTful API,使用戶能夠輕松地創(chuàng)建、調(diào)整和刪除 GlusterFS 卷

設(shè)置免密登錄glusterfs node節(jié)點(diǎn)

ssh-keygen -t rsa
ssh-copy-id -p 22 root@172.18.1.52
ssh-copy-id -p 22 root@172.18.1.53
ssh-copy-id -p 22 root@172.18.1.54

安裝heketi

在172.18.1.52執(zhí)行

yum install  -y heketi heketi-client

修改heketi 配置文件

訪問(wèn)/etc/heketi/heketi.json,并修改

修改啟動(dòng)文件/usr/lib/systemd/system/heketi.service,否則啟動(dòng)報(bào)錯(cuò)

執(zhí)行以下命令

systemctl daemon-reload
 systemctl enable heketi
 systemctl start heketi

驗(yàn)證是否啟動(dòng)成功

返回 Hello from Heketi 則成功

curl -s 127.0.0.1:8080/hello | awk '{print $0}'

使用heketi創(chuàng)建glusterfs集群

執(zhí)行fdisk -l查看可掛載磁盤(pán),可以看到/dev/vdb為未掛載

創(chuàng)建 /etc/heketi/heketi-topology.json,配置內(nèi)容如下:

# 通過(guò)topology.json文件定義組建GlusterFS集群;
# topology指定了層級(jí)關(guān)系:clusters-->nodes-->node/devices-->hostnames/zone;
# node/hostnames字段的manage填寫(xiě)主機(jī)ip,指管理通道,在heketi服務(wù)器不能通過(guò)hostname訪問(wèn)GlusterFS節(jié)點(diǎn)時(shí)不能填寫(xiě)hostname;
# node/hostnames字段的storage填寫(xiě)主機(jī)ip,指存儲(chǔ)數(shù)據(jù)通道,與manage可以不一樣;
# node/zone字段指定了node所處的故障域,heketi通過(guò)跨故障域創(chuàng)建副本,提高數(shù)據(jù)高可用性質(zhì),如可以通過(guò)rack的不同區(qū)分zone值,創(chuàng)建跨機(jī)架的故障域;
# devices字段指定GlusterFS各節(jié)點(diǎn)的盤(pán)符(可以是多塊盤(pán)),必須是未創(chuàng)建文件系統(tǒng)的裸設(shè)備

{
  "clusters": [
    {
      "nodes": [
        {
          "node": {
            "hostnames": {
              "manage": [
                "172.18.1.52"
              ],
              "storage": [
                "172.18.1.52"
              ]
            },
            "zone": 1
          },
          "devices": [
            "/dev/vdb"
          ]
        },
        {
          "node": {
            "hostnames": {
              "manage": [
               "172.18.1.53"
              ],
              "storage": [
                 "172.18.1.53"
              ]
            },
            "zone": 2
          },
          "devices": [
            "/dev/vdb"
          ]
        },
        {
          "node": {
            "hostnames": {
              "manage": [
               "172.18.1.54"
              ],
              "storage": [
                "172.18.1.54"
              ]
            },
            "zone": 3
          },
          "devices": [
            "/dev/vdb"
          ]
        }
      ]
    }
  ]
}

執(zhí)行以下命令創(chuàng)建集群

heketi-cli --user=admin --secret=12123  --server http://127.0.0.1:8080 topology load --json=/etc/heketi/heketi-topology.json

5.創(chuàng)建k8s StorageClass

k8s中的StorageClass用于定義和配置持久卷(Persistent Volume)的資源對(duì)象。StorageClass 提供了一種抽象層,使得管理員能夠定義不同類型的存儲(chǔ)和訪問(wèn)模式,并將其提供給應(yīng)用程序開(kāi)發(fā)人員使用。

創(chuàng)建gfs-secret.yaml

執(zhí)行echo -n "mypassword" | base64,對(duì)上面配置的admin密碼進(jìn)行加密,并修改key值

apiVersion: v1
kind: Secret
metadata:
  name: heketi-secret
  namespace: default
data:
  # base64 encoded password. E.g.: echo -n "mypassword" | base64
  key: c2dqcHJvZDIwMjMxcWF6 
type: kubernetes.io/glusterfs

創(chuàng)建gfs-StorageClass.yaml

創(chuàng)建gfs-StorageClass.yaml需要提前準(zhǔn)備以下兩個(gè)參數(shù)

heketi-cli --user=admin --secret=1212  --server http://127.0.0.1:8080 cluster list

最終我們的配置文件如下

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gfs-storage
provisioner: kubernetes.io/glusterfs
parameters:
  # resturl 是第二步搭建好之后的heketi 接口地址
  resturl: "http://172.18.1.52:8080"
  # Clusterid 必填
  clusterid: "caf83363937a99eccfd1e1c03112fd2d"
  restuser: "admin"
  secretNamespace: "default"
  secretName: "heketi-secret"
  gidMin: "40000"
  gidMax: "50000"
#  volumetype: "none"
  volumenameprefix: "gfs"

執(zhí)行以下命令部署到k8s集群

執(zhí)行以下命令

kubectl apply -f gfs-secret.yaml
kubectl apply -f gfs-StorageClass.yaml

查詢創(chuàng)建結(jié)果

kubectl get secret
kubectl get sc

以上結(jié)果表明,創(chuàng)建成功

6.測(cè)試

下面我們部署一個(gè)spring boot工程,并把日志文件掛載到gfs中

新建backend-log-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: backend-log-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: gfs-storage

新建backend-dp.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  backend
spec:
  selector:
    matchLabels:
      app:  backend
  replicas: 1
  template:
    metadata:
      labels:
        app:  backend
        version: latest
    spec:
      containers:
        - name: backend
          image: "dweizhao/backend:latest"
          imagePullPolicy: Always
          resources:
            limits:
              cpu: 1000m
              memory: 1G
            requests:
              cpu: 1m
              memory: 200M
          volumeMounts:
            - mountPath: /data/web_log/java/backend
              name: web-log
      volumes:
        - name: web-log
          persistentVolumeClaim:
            claimName: backend-log-pvc

部署

kubectl apply -f backend-log-pvc.yaml
kubectl apply -f backend-dp.yaml

部署完成以后,查看pv與系統(tǒng)日志看到掛載成功

驗(yàn)證掛載是否成功

登錄文件服務(wù)器,執(zhí)行df -h查看掛載日志文件,如下所圖

由于掛載名稱無(wú)法識(shí)別,導(dǎo)致無(wú)法定位目標(biāo)文件,因此執(zhí)行mount.sh(輔助命令章節(jié))腳本,把fs卷掛載到/data/web_log/目錄下并以namespace+pvcName命名,如下圖執(zhí)行完腳本,進(jìn)入/data/web_log/default_backend-log-pvc目錄,查看掛載日志

7.輔助命令

mount.sh

在heketi節(jié)點(diǎn)上執(zhí)行以下命令,把fs卷掛載到/data/web_log/目錄下,用于查詢一些日志 腳本如下:

#/bin/sh
VolumeList=$(heketi-cli --user=admin --secret=1212 --server http://127.0.0.1:8080 volume list | awk -F ':' '{print $NF}')
for Volume in ${VolumeList[@]}; do
    MountDir=$(echo $Volume | awk -F '_' '{for(i=2;i<NF;i++) printf("%s_",$i);printf("\n") }' | sed 's/.$//g')

    # 檢查文件夾是否存在
    if [ ! -d "/data/web_log/$MountDir" ]; then
        mkdir -p "/data/web_log/$MountDir"
        echo "create dir /data/web_log/$MountDir"
        mount -t glusterfs "127.0.0.1:$Volume" "/data/web_log/$MountDir"
    else
     echo "Already dir /data/web_log/$MountDir"
    fi
done

初始化磁盤(pán)數(shù)據(jù)

pvremove /dev/vdb --force --force


責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2017-01-10 16:04:02

容器MySQL實(shí)踐

2022-06-03 09:21:47

Svelte前端攜程

2023-09-05 07:40:37

PythonSDKAPI

2023-07-12 16:07:50

鏈路數(shù)據(jù)湖技術(shù)

2023-10-16 07:39:02

ELKpod日志

2022-09-01 08:50:22

kubernetes容器

2023-10-16 16:00:27

Redis限流

2022-07-08 09:26:45

Flink快手計(jì)算

2023-10-20 15:08:28

pod日志采集

2022-09-19 08:35:28

Kafka節(jié)點(diǎn)故障

2021-06-17 06:29:16

kube-vip Kubernetes開(kāi)源項(xiàng)目

2015-07-17 10:25:43

kubernetesDocker集群系統(tǒng)

2021-01-07 10:18:03

Redis數(shù)據(jù)庫(kù)環(huán)境搭建

2019-08-23 13:10:39

美團(tuán)點(diǎn)評(píng)Kubernetes集群管理

2022-07-08 14:17:18

Kubernetes集群高可用Linux

2019-07-04 13:10:53

Docker設(shè)計(jì)云計(jì)算

2024-12-09 08:27:02

2020-07-08 08:03:37

KubernetesLens集群
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)