什么是 Heketi 和 GlusterFS

Heketi 是一个与 GlusterFS 集成的管理工具,它提供了一种简化和自动化 GlusterFS 卷创建、扩展和管理的方式。GlusterFS 是一个开源的分布式文件系统,它可以将多个存储服务器组合在一起,形成一个高可用、高容量的存储解决方案。使用 Heketi 可以方便地为 Kubernetes 集群提供持久化存储。

安装和配置 Heketi

1. 首先,安装 Heketi 和 GlusterFS 二进制文件并创建所需的存储网络、存储节点和存储卷等资源。

yum install heketi heketi-client glusterfs glusterfs-client
Shell

2. 接下来,创建一个 Heketi 配置文件并配置访问控制和存储后端。

{
  "_port_comment": "Heketi Server 的监听端口 ",
  "port": "8080",
  "_use_auth": "这里可以配置使用的认证方式,比如通过 JWT 进行认证 ",
  "use_auth": false,
  "_jwt": "如果使用 JWT 认证,可以配置相应的密钥 ",
  "jwt": {
    "admin": {
      "secret": "xxxxxxxxxxxxx"
    },
    "user": {
      "secret": "yyyyyyyyyyyyy"
    }
  },

  "_glusterfs_comment": "GlusterFS 部署的配置信息 ",
  "glusterfs": {
    "_config_comment": "GlusterFS 存储服务器配置列表 ",
    "storage": [
      {
        "type": "device",
        "device": "/dev/sdb"
      },
      {
        "type": "device",
        "device": "/dev/sdc"
      },
      {
        "type": "device",
        "device": "/dev/sdd"
      }
    ],
    "_executor_comment": "Heketi 如何管理 GlusterFS 卷的执行器 ",
    "executor": "kubernetes",
    "_db_comment": "内部数据存储 / 数据库配置 ",
    "db": "heketi.db"
  }
}
Plain text

3. 启动 Heketi 服务并验证是否正常工作。
heketi --config= 
Shell

在 Kubernetes 中使用 Heketi 提供的持久化存储

1. 在 Kubernetes 中创建一个 GlusterFS 存储类。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: glusterfs
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://:8080"
  restuser: ""
  restuserkey: ""
  volumetype: "replica 2"
  options: "backup-volfile-servers=-"
YAML

2. 创建一个持久卷声明(PVC),并引用上一步创建的存储类。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: glusterfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: glusterfs
  resources:
    requests:
      storage: 1Gi
YAML

3. 创建一个使用持久卷声明的 Pod,并将 GlusterFS 卷挂载到容器中。
apiVersion: v1
kind: Pod
metadata:
  name: glusterfs-pod
spec:
  containers:
    - name: nginx
      image: nginx
      volumeMounts:
        - name: glusterfs-vol
          mountPath: /var/www/html
  volumes:
    - name: glusterfs-vol
      persistentVolumeClaim:
        claimName: glusterfs-pvc
YAML

4. 验证 GlusterFS 卷是否成功挂载到容器中。
kubectl exec -it glusterfs-pod -- ls /var/www/html
Shell