安装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