如何在 Kubernetes(k8s) 中配置和使用 GlusterFS 存储作为 PersistentVolume?

问题浏览数Icon
42
问题创建时间Icon
2025-04-24 03:22:00
回答 | 共 5 个
作者头像
starqian99

在Kubernetes中配置GlusterFS作为PersistentVolume,需遵循以下步骤:

  1. 前提条件

    • 已部署GlusterFS集群并创建Volume
    • 所有K8s节点安装glusterfs-client
  2. 创建Endpoints/Service

    apiVersion: v1
    kind: Endpoints
    metadata:
    name: glusterfs-cluster
    subsets:
    - addresses:
      - ip: 192.168.1.100
    ports:
      - port: 49152
        name: glusterfs
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: glusterfs-cluster
    spec:
    ports:
    - port: 49152
  3. 定义PersistentVolume

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: gluster-pv
    spec:
    capacity:
    storage: 10Gi
    accessModes:
    - ReadWriteMany
    glusterfs:
    endpoints: glusterfs-cluster
    path: my_volume
    readOnly: false
    persistentVolumeReclaimPolicy: Retain
  4. 创建PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: gluster-pvc
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
      storage: 10Gi
  5. Pod挂载使用

    apiVersion: v1
    kind: Pod
    metadata:
    name: app-pod
    spec:
    containers:
    - name: app
      image: nginx
      volumeMounts:
        - mountPath: /data
          name: gluster-volume
    volumes:
    - name: gluster-volume
      persistentVolumeClaim:
        claimName: gluster-pvc

注意事项

  • 确保网络互通,防火墙开放所需端口
  • 生产环境建议使用StorageClass动态供给
  • 多副本场景建议启用heketi进行集群管理
  • 访问模式需与GlusterFS Volume配置匹配
作者头像
silentfox33

在Kubernetes中配置GlusterFS作为PersistentVolume的步骤如下:

  1. 部署GlusterFS集群

    • 安装GlusterFS节点并创建存储卷(如gluster volume create vol01 replica 3 server1:/data server2:/data server3:/data
  2. 安装Heketi(可选)

    • 使用Heketi自动化存储管理,通过Kubernetes部署Heketi Service及API端点
  3. 创建StorageClass(动态供给)

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
     name: glusterfs-sc
    provisioner: kubernetes.io/glusterfs
    parameters:
     resturl: "http://heketi-service.default:8080"
     restauthenabled: "false"
  4. 手动创建PV/PVC(静态供给)

    apiVersion: v1
    kind: PersistentVolume
    metadata:
     name: gluster-pv
    spec:
     capacity:
       storage: 10Gi
     accessModes:
       - ReadWriteMany
     glusterfs:
       endpoints: "glusterfs-cluster"
       path: "vol01"
       readOnly: false
  5. 创建PVC绑定

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: gluster-pvc
    spec:
     storageClassName: ""
     accessModes:
       - ReadWriteMany
     resources:
       requests:
         storage: 10Gi
  6. Pod挂载使用

    spec:
     containers:
       - volumeMounts:
         - mountPath: "/data"
           name: gluster-storage
     volumes:
       - name: gluster-storage
         persistentVolumeClaim:
           claimName: gluster-pvc

注意

  • 需提前创建glusterfs端点(Endpoints)指向集群节点
  • 多节点访问建议使用ReadWriteMany模式
  • Heketi提供REST API实现动态存储分配
  • 生产环境应配置TLS认证及资源配额
作者头像
vmlearner01
  1. 准备GlusterFS集群:确保GlusterFS集群已部署且卷(如gv0)创建完成。

  2. 安装依赖:在所有Kubernetes节点安装glusterfs-client

    apt-get install glusterfs-client  # Debian/Ubuntu
    yum install glusterfs-fuse        # CentOS/RHEL
  3. 创建Endpoint/Service:定义GlusterFS节点IP(替换为实际IP):

    apiVersion: v1
    kind: Endpoints
    metadata:
     name: glusterfs-cluster
    subsets:
     - addresses:
         - ip: 10.0.0.1
         - ip: 10.0.0.2
       ports:
         - port: 49152  # GlusterFS默认端口
    ---
    apiVersion: v1
    kind: Service
    metadata:
     name: glusterfs-cluster
    spec:
     ports:
     - port: 49152
  4. 创建PersistentVolume(静态配置)

    apiVersion: v1
    kind: PersistentVolume
    metadata:
     name: gluster-pv
    spec:
     capacity:
       storage: 10Gi
     accessModes:
       - ReadWriteMany
     glusterfs:
       endpoints: glusterfs-cluster
       path: gv0               # GlusterFS卷名称
       readOnly: false
     persistentVolumeReclaimPolicy: Retain
  5. 创建PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: gluster-pvc
    spec:
     accessModes:
       - ReadWriteMany
     resources:
       requests:
         storage: 10Gi
  6. 挂载到Pod

    apiVersion: v1
    kind: Pod
    metadata:
     name: app-pod
    spec:
     containers:
       - name: app
         image: nginx
         volumeMounts:
           - mountPath: /data
             name: gluster-storage
     volumes:
       - name: gluster-storage
         persistentVolumeClaim:
           claimName: gluster-pvc

验证:进入Pod写入文件,检查GlusterFS卷中是否持久化数据。

作者头像
haochen01

先在k8s集群外搭好GlusterFS存储集群,记下节点IP和卷名。然后在k8s里创建Endpoints和Service指向GlusterFS节点,接着写个PersistentVolume配置文件,指定glusterfs的路径和endpoints名称。再搞个PersistentVolumeClaim来绑定这个PV。最后在Pod配置里通过volumeClaimName调用就完事了。注意要装好glusterfs客户端,挂载时保持长连接别断嗷!

作者头像
mistzone99

在Kubernetes中配置GlusterFS存储需创建Endpoints和Service指向Gluster集群,随后定义PersistentVolume指定glusterfs类型及路径,最后通过PersistentVolumeClaim挂载到Pod即可使用。