使用glusterfs 文件系统做k8s 的持久化存储

安装glusterfs参考:https://jimmysong.io/kubernetes-handbook/practice/using-glusterfs-for-persistent-storage.html

一、使用如下脚本创建数据卷

#!/bin/bash

if [ $# -lt 3 ];
then
    echo "please input at least 3 param"
    exit 0
fi
volumeName=$1
mountPath=$2
dbSize=$3
gluster volume create $volumeName  replica 2 transport tcp gfs-node1:/data1/gfs_data/${mountPath} gfs-node2:/data1/gfs_data/${mountPath} gfs-node3:/data1/gfs_data/${mountPath} gfs-node4:/data1/gfs_data/
${mountPath} force
gluster volume list
gluster volume start $volumeName
#gluster volume quota $volumeName enable
#gluster volume quota $volumeName limit-usage / ${dbSize}GB
#gluster volume set $volumeName performance.cache-size 2GB
#gluster volume set $volumeName performance.io-thread-count 16
#gluster volume set $volumeName network.ping-timeout 10
#gluster volume set $volumeName performance.write-behind-window-size 1024MB
echo "#########volume list #########"
gluster volume list

# sh createVolume.sh k8s-volume-jenkins-master jenkins-master 20

shell 脚本变量说明:$1 卷名称 $2 挂载路径 $3卷大小

二、配置endpoints

{
  "kind": "Endpoints",
  "apiVersion": "v1",
  "metadata": {
    "name": "glusterfs-cluster",
    "namespace": "ci"
  },
  "subsets": [
    {
      "addresses": [
        {
          "ip": "192.168.1.1"
        }
      ],
      "ports": [
        {
          "port": 1990
        }
      ]
    },
    {
      "addresses": [
        {
          "ip": "192.168.1.2"
        }
      ],
      "ports": [
        {
          "port": 1990
        }
      ]
    },
    {
      "addresses": [
        {
          "ip": "192.168.1.3"
        }
      ],
      "ports": [
        {
          "port": 1990
        }
      ]
    },
    {
      "addresses": [
        {
          "ip": "192.168.1.4"
        }
      ],
      "ports": [
        {
          "port": 1990
        }
      ]
    }
  ]
}

# kubectl apply -f glusterfs-endpoints.json

配置endpoints service

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "glusterfs-cluster",
    "namespace": "ci"
  },
  "spec": {
    "ports": [
      {"port": 1990}
    ]
  }
}
# kubectl apply -f glusterfs-service.json

三、创建pv

kubectl create -f jenkins-master-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-jenkins-master
  namespace: ci
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    endpoints: "glusterfs-cluster"
    path: "k8s-volume-jenkins-master"
    readOnly: false

四、创建pvc

# kubectl create -f jenkins-master-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-jenkins-master
  namespace: ci
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 20Gi


五、k8s 对象使用pvc

          volumeMounts:
            - name: home
              mountPath: "/var/jenkins_home"
      volumes:
        - name: home
          persistentVolumeClaim:
            claimName: pvc-jenkins-master

猜你喜欢

转载自blog.csdn.net/gnufre/article/details/80340715