文档章节

Kubernetes中挂载GlusterFS的volume

openthings
 openthings
发布于 2018/11/26 22:01
字数 1133
阅读 567
收藏 4

Kubernetes可以直接挂载多种文件系统,其中包括GlusterFS(https://kubernetes.io/docs/concepts/storage/volumes/#glusterfs)。

这里采用最简单的方法,挂载宿主系统的GlusterFS卷给Kubernetes中的pod使用。

1、安装GlusterFS

关于GlusterFS更多信息,参见:

最简单的方法是使用mount挂载一个GlusterFS的Volume到本地卷,如:

# 基于ZFS从文件创建一个虚拟磁盘卷。
# 首先,创建一个空的文件(2GB)。
dd if=/dev/zero of=zpool-gvz.img bs=1M count=2048
# 然后从该文件创建ZFS存储池。
sudo zpool create zpool-gvz zpool-gvz.img

# 将虚拟存储池作为Bricks加入GlusterFS的网络存储卷。
sudo gluster volume create gvz 10.1.1.201:/zpool-gvz

# 将GlusterFS的网络存储卷挂载为本地虚拟卷,以便直接访问。 
# 首先,创建挂载点目录。
sudo mkdir /home/supermap/gvzv
# 然后,将GlusterFS的网络存储卷挂载到上面创建的目录。
sudo mount -t glusterfs 10.1.1.201:/gvz /home/supermap/gvzv
# 现在,可以直接访问该目录,与本地文件系统完全相同。
ls -l /home/supermap/gvzv

然后,将本地卷挂载到Kubernetes中的pod,使用hostpath存储类型:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gluster-provisioner-gvz
spec:
  capacity:
    storage: 200Ti
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /home/supermap/gvzv

将上面文件保存为 gluster-pv.yaml,然后运行 kubectl apply -f gluster-pv.yaml 即可,使用 kubectl get pv 查看信息。

这种方式的好处是非常简单,可以从宿主机同时直接查看内容,但是因为hostpath不可漂移,存在单点故障和性能瓶颈,建议只在开发、调试环境下使用。

2、创建终结点

也可以直接将GlusterFS集群服务提供给Kubernetes集群使用,需要一系列操作进行设置。下面将介绍这一方法。

创建(endpoint.yaml),可以聚合多个节点的GlusterFS服务。

apiVersion: v1
kind: Endpoints
metadata:
  name: glusterfs-cluster
  namespace: default
subsets:
- addresses:
  - ip: 10.1.1.184
  ports:
  - port: 1000
    protocol: TCP

3、创建服务点

创建(service.yaml),将GlusterFS通过Kubernetes服务提供访问。

apiVersion: v1
kind: Service
metadata:
  name: glusterfs-cluster
  namespace: default
spec:
  ports:
  - port: 1000
    protocol: TCP
    targetPort: 1000
  sessionAffinity: None
  type: ClusterIP

4、创建使用者

创建(pod.json),将GlusterFS的Volume挂载到pod中。

{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "name": "glusterfs"
    },
    "spec": {
        "containers": [
            {
                "name": "glusterfs",
                "image": "nginx",
                "volumeMounts": [
                    {
                        "mountPath": "/mnt/glusterfs",
                        "name": "glusterfsvol"
                    }
                ]
            }
        ],
        "volumes": [
            {
                "name": "glusterfsvol",
                "glusterfs": {
                    "endpoints": "glusterfs-cluster",
                    "path": "gvx",
                    "readOnly": true
                }
            }
        ]
    }
}

上面的这个pod的例子直接使用了GlusterFS集群的服务。因为新版的Kubernetes提出了CSI接口,因此还是建议使用下面的PV/PVC/StorageClass这一套接口来实现访问架构,应用pod能具有更好的兼容性和可移植性。

5、创建PV

将GlusterFS的卷映射为Kbernetes的持久卷(pv),从而提供统一的访问方法。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gluster-dev-volume
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    endpoints: "glusterfs-cluster"
    path: "gvx"
    readOnly: false

6、创建PVC

通过pvc(持久卷申请),Kubernetes可以自动在可用资源分配持久卷。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: glusterfs-nginx
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

7、测试持久卷

创建 pod-nginx.yaml,使用pvc来定义存储。跟上面2中的用法有点不同,2中使用直接挂载volume卷的方法,可移植性不如使用pvc这个统一的CSI(容器存储借口)标准规范接口。

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
           - containerPort: 80
        volumeMounts:
            - name: gluster-dev-volume
              mountPath: "/usr/share/nginx/html"
         volumes:
        - name: gluster-dev-volume
          persistentVolumeClaim:
            claimName: glusterfs-nginx

8、执行和获取状态信息

按下面的方法执行命令,获取状态信息。

$ kubectl apply -f glusterfs-endpoints.json
$ kubectl get ep

$ kubectl apply -f glusterfs-service.json
$ kubectl get svc# 查看测试 Pod$ kubectl apply -f glusterfs-pod.json
$ kubectl get pods 
$ kubectl describe pods/glusterfs
$ kubectl exec glusterfs -- mount | grep gluster

除了上面的方法之外,还有其它的在Kubernetes中使用Gluster的方法,如使用heketi进行GlusterFS Volume的动态创建和管理,可以支持StorageClass的动态卷特性(Heketi使用hostnet和Volume映射到宿主机的Gluster服务,采用Daemonset方式进行节点管理)。

此外,最新的Gluster提供原生支持Kubernetes的方法,不过目前还处于早期阶段,暂时还不具备可用性。

更多:

© 著作权归作者所有

openthings
粉丝 325
博文 1140
码字总数 689435
作品 1
东城
架构师
私信 提问
CentOS7下配置GlusterFS供Kubernetes使用

CentOS7下配置GlusterFS供Kubernetes使用 [TOC] 1. 环境说明 系统:CentOS7,为非系统分区挂载目录 docker:1.13.1 kubernetes:1.11.1 glusterfs:4.1.2 2. GlusterFS部署 2个节点,192.168...

ygqygq2
2018/08/17
0
0
kubernetes中部署Heketi和GlusterFS

前言 在kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC-->Pod挂载PVC 如果要创建多个PV,则需要手动重复执行这些繁锁步骤,Heketi可以解...

Flywithmeto
2018/07/01
0
0
Kubernetes中部署Heketi和GlusterFS

Kubernetes中部署Heketi和GlusterFS [TOC] 1. 前言 在Kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC-->Pod挂载PVC 如果要创建多个PV,...

ygqygq2
2018/08/17
0
0
使用GlusterFS作为Kubernetes的后端存储

主机部署GFS 格式化硬盘,并添加挂在作为数据盘 mkfs.xfs -i size=2048 disk-name or partition-name(/dev/sdc) mkdir -p /data/brick1 mount /dev/sdc /data/brick1 tip: you can use a dir......

数据架构师
02/17
0
0
通过Heketi管理GlusterFS为K8S集群提供持久化存储

参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.redhat.com/documentation/en-us/redhatglusterstorage/3.3/html/administr......

Netonline
01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部