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

生產實踐:使用 GlusterFS 搭建 Kubernetes 存儲卷集群

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

我們將重點討論如何使用 GlusterFS 搭建一個可靠的存儲解決方案,以供 Kubernetes 集群使用。

1.服務器列表:

  • 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服務端

在三個節點分別執行

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

設置開機啟動,并啟動

在三個節點分別執行

systemctl start glusterd
 systemctl status glusterd
 systemctl enable glusterd

關閉節點防火墻

在三個節點分別執行

systemctl stop firewalld

組建集群

在172.18.1.52服務器上執行以下命令:

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

查看集群狀態

gluster peer status

4.heketi安裝

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

設置免密登錄glusterfs node節點

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執行

yum install  -y heketi heketi-client

修改heketi 配置文件

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

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

執行以下命令

systemctl daemon-reload
 systemctl enable heketi
 systemctl start heketi

驗證是否啟動成功

返回 Hello from Heketi 則成功

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

使用heketi創建glusterfs集群

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

創建 /etc/heketi/heketi-topology.json,配置內容如下:

# 通過topology.json文件定義組建GlusterFS集群;
# topology指定了層級關系:clusters-->nodes-->node/devices-->hostnames/zone;
# node/hostnames字段的manage填寫主機ip,指管理通道,在heketi服務器不能通過hostname訪問GlusterFS節點時不能填寫hostname;
# node/hostnames字段的storage填寫主機ip,指存儲數據通道,與manage可以不一樣;
# node/zone字段指定了node所處的故障域,heketi通過跨故障域創建副本,提高數據高可用性質,如可以通過rack的不同區分zone值,創建跨機架的故障域;
# devices字段指定GlusterFS各節點的盤符(可以是多塊盤),必須是未創建文件系統的裸設備

{
  "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"
          ]
        }
      ]
    }
  ]
}

執行以下命令創建集群

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

5.創建k8s StorageClass

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

創建gfs-secret.yaml

執行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

創建gfs-StorageClass.yaml

創建gfs-StorageClass.yaml需要提前準備以下兩個參數

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"

執行以下命令部署到k8s集群

執行以下命令

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

查詢創建結果

kubectl get secret
kubectl get sc

以上結果表明,創建成功

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與系統日志看到掛載成功

驗證掛載是否成功

登錄文件服務器,執行df -h查看掛載日志文件,如下所圖

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

7.輔助命令

mount.sh

在heketi節點上執行以下命令,把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

初始化磁盤數據

pvremove /dev/vdb --force --force


責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2017-01-10 16:04:02

容器MySQL實踐

2022-06-03 09:21:47

Svelte前端攜程

2023-09-05 07:40:37

PythonSDKAPI

2023-07-12 16:07:50

鏈路數據湖技術

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快手計算

2023-10-20 15:08:28

pod日志采集

2022-09-19 08:35:28

Kafka節點故障

2021-06-17 06:29:16

kube-vip Kubernetes開源項目

2015-07-17 10:25:43

kubernetesDocker集群系統

2021-01-07 10:18:03

Redis數據庫環境搭建

2022-07-08 14:17:18

Kubernetes集群高可用Linux

2019-08-23 13:10:39

美團點評Kubernetes集群管理

2024-12-09 08:27:02

2019-07-04 13:10:53

Docker設計云計算

2023-03-30 09:17:42

KubesprayKubernetesLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产91| 色www精品视频在线观看 | 久久人人爽人人爽人人片av免费 | 国产综合在线视频 | 欧美极品在线播放 | 黄色日批视频 | 色综合一区二区三区 | 亚洲精品久久久久久久久久久 | 特黄级国产片 | 中国一级特黄真人毛片 | 国产乱码高清区二区三区在线 | 亚洲天堂中文字幕 | 中文天堂网 | 亚洲av一级毛片 | 久久看看 | 国产99久久精品一区二区永久免费 | 国产精品96久久久久久 | 免费看一区二区三区 | 国产精品中文字幕在线 | 韩日一区二区 | 日韩精品福利 | 亚洲国产一区二区三区在线观看 | 亚洲欧美综合精品另类天天更新 | 99日韩 | 欧美一区在线视频 | 欧美日韩毛片 | 日韩亚洲一区二区 | 日韩精品一区二区在线观看 | 三级av在线 | 国精日本亚洲欧州国产中文久久 | 午夜精品久久久久久久久久久久久 | 在线视频中文字幕 | 偷拍亚洲色图 | 国产精品美女久久久久久免费 | 免费九九视频 | 日韩成人专区 | 中文字幕 在线观看 | 成人美女免费网站视频 | 日韩一区在线播放 | 狠狠操av| 91精品国产色综合久久 |