成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

我們將重點討論如何使用 GlusterFS 搭建一個可靠的存儲解決方案,以供 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ù)端

在三個節(jié)點分別執(zhí)行

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

設(shè)置開機啟動,并啟動

在三個節(jié)點分別執(zhí)行

systemctl start glusterd
 systemctl status glusterd
 systemctl enable glusterd

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

在三個節(jié)點分別執(zhí)行

systemctl stop firewalld

組建集群

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

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

查看集群狀態(tài)

gluster peer status

4.heketi安裝

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

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

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 配置文件

訪問/etc/heketi/heketi.json,并修改

修改啟動文件/usr/lib/systemd/system/heketi.service,否則啟動報錯

執(zhí)行以下命令

systemctl daemon-reload
 systemctl enable heketi
 systemctl start heketi

驗證是否啟動成功

返回 Hello from Heketi 則成功

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

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

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

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

# 通過topology.json文件定義組建GlusterFS集群;
# topology指定了層級關(guān)系:clusters-->nodes-->node/devices-->hostnames/zone;
# node/hostnames字段的manage填寫主機ip,指管理通道,在heketi服務(wù)器不能通過hostname訪問GlusterFS節(jié)點時不能填寫hostname;
# node/hostnames字段的storage填寫主機ip,指存儲數(shù)據(jù)通道,與manage可以不一樣;
# node/zone字段指定了node所處的故障域,heketi通過跨故障域創(chuàng)建副本,提高數(shù)據(jù)高可用性質(zhì),如可以通過rack的不同區(qū)分zone值,創(chuàng)建跨機架的故障域;
# devices字段指定GlusterFS各節(jié)點的盤符(可以是多塊盤),必須是未創(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)的資源對象。StorageClass 提供了一種抽象層,使得管理員能夠定義不同類型的存儲和訪問模式,并將其提供給應(yīng)用程序開發(fā)人員使用。

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

執(zhí)行echo -n "mypassword" | base64,對上面配置的admin密碼進行加密,并修改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需要提前準備以下兩個參數(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.測試

下面我們部署一個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)日志看到掛載成功

驗證掛載是否成功

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

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

7.輔助命令

mount.sh

在heketi節(jié)點上執(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

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

pvremove /dev/vdb --force --force


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

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2017-01-10 16:04:02

容器MySQL實踐

2023-09-05 07:40:37

PythonSDKAPI

2022-06-03 09:21:47

Svelte前端攜程

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限流

2023-10-20 15:08:28

pod日志采集

2022-07-08 09:26:45

Flink快手計算

2022-09-19 08:35:28

Kafka節(jié)點故障

2021-06-17 06:29:16

kube-vip Kubernetes開源項目

2015-07-17 10:25:43

kubernetesDocker集群系統(tǒng)

2021-01-07 10:18:03

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

2022-07-08 14:17:18

Kubernetes集群高可用Linux

2019-08-23 13:10:39

美團點評Kubernetes集群管理

2019-07-04 13:10:53

Docker設(shè)計云計算

2024-12-09 08:27:02

2023-03-30 09:17:42

KubesprayKubernetesLinux
點贊
收藏

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

主站蜘蛛池模板: 日韩精品av一区二区三区 | 精精国产xxxx视频在线播放 | 在线观看中文字幕dvd播放 | 国产精品毛片 | 一区二区三区四区电影 | 夜夜夜夜夜夜曰天天天 | 欧美午夜精品 | 国产色婷婷精品综合在线手机播放 | 国产精品呻吟久久av凹凸 | 色综合久| 日本在线看片 | 九九热精品视频 | 国产资源一区二区三区 | av第一页 | 成人免费看黄网站在线观看 | 国外成人免费视频 | 亚洲久久 | 一区二区三区精品视频 | 日韩成人av在线 | 欧美操操操 | 午夜视频在线 | 久久中文一区二区 | 精品国产精品国产偷麻豆 | 国产午夜一级 | 天天干免费视频 | 91精品一区二区三区久久久久 | 337p日韩 | 国产精品视频网 | 日本一区二区不卡视频 | 男人天堂手机在线视频 | www视频在线观看 | 中文字幕av在线一二三区 | 一级毛片在线视频 | 国产激情福利 | 91精品在线观看入口 | 精品国产乱码久久久 | 国产精品久久久久久久久久久免费看 | 午夜免费视频观看 | 国产91色在线 | 亚洲 | 日韩在线视频一区 | 日本福利在线观看 |