Kubernetes 集群使用 GlusterFS 作为数据持久化存储

安装 GlusterFS

可以看我的另一篇博客:CentOS 7.6 部署 GlusterFS 分布式存储系统

整合到 Kubernetes 集群

配置 endpoint
---
apiVersion: v1
kind: Endpoints
metadata:
  annotations:
  name: glusterfs
  # 注意修改成自己需要使用的 namespace
  namespace: monitor
subsets:
- addresses:
  # 配置成自己的 GlusterFS 节点 ip
  - ip: 172.72.0.96
  - ip: 172.72.0.97
  ports:
  # GlusterFS 默认端口是 49152,注意修改
  - port: 49152
    protocol: TCP
配置 service
---
apiVersion: v1
kind: Service
metadata:
  annotations:
  name: glusterfs
  # 注意修改成自己需要使用的 namespace
  namespace: monitor
spec:
  ports:
  # GlusterFS 默认端口是 49152,注意修改
  - port: 49152
    protocol: TCP
    targetPort: 49152
  sessionAffinity: None
  type: ClusterIP
创建 pv
  • accessModes - 访问模式
    • ReadWriteOnce - 卷可以被一个节点以读写方式挂载。 ReadWriteOnce 访问模式也允许运行在同一节点上的多个 Pod 访问卷。
    • ReadOnlyMany - 卷可以被多个节点以只读方式挂载
    • ReadWriteMany - 卷可以被多个节点以读写方式挂载
    • ReadWriteOncePod - 卷可以被单个 Pod 以读写方式挂载;这只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本
  • persistentVolumeReclaimPolicy - 定义当从持久卷声明释放持久卷时会发生什么
    • Retain - 手动创建
    • Delete - 动态制备 PersistentVolumes 所用的默认值
    • Recycle - 已弃用
---
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
  labels:
  name: monitor-config-pv
spec:
  accessModes:
  - ReadOnlyMany
  capacity:
    storage: 10Gi
  glusterfs:
    endpoints: glusterfs
    # k8s-gfs-data 是我的 GlusterFS 卷的名称,注意修改成自己的
    # config 是我定义的路径,注意修改成自己的
    path: k8s-gfs-data/kubernetest/config
    readOnly: false
  persistentVolumeReclaimPolicy: Retain

验证

kubectl get pv | grep monitor

pv 目前处于 Available 状态

monitor-config-pv   10Gi       ROX            Retain           Available                                   21s
创建 pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
  labels:
  name: monitor-config-pvc
  namespace: monitor
spec:
  accessModes:
  - ReadOnlyMany
  resources:
    requests:
      storage: 10Gi
  selector:
    matchLabels:

验证

查看 pv 的状态

kubectl get pv | grep monitor

pv 此时处于 Bound 状态

monitor-config-pv   10Gi       ROX            Retain           Bound    monitor/monitor-config-pvc                           22s

查看 pvc 的状态

kubectl get pvc -n monitor | grep monitor

pvc 处于 Bound 的状态,绑定的 pvmonitor-config-pv

monitor-config-pvc   Bound    monitor-config-pv   10Gi       ROX                           5s

接下来就可以在 pod 中应用 pvc

posted @ 2024-08-20 23:21  月巴左耳东  阅读(7)  评论(0编辑  收藏  举报  来源