kubernetes实践之二十六:GlusterFS
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,一:前言GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS
千家信息网最后更新 2026年11月03日kubernetes实践之二十六:GlusterFS一:前言
GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
服务器:
10.116.137.196 k8s_master
10.116.82.28 k8s_node1
10.116.36.57 k8s_node2
二:安装glusterfs
我们直接在物理机上使用yum安装,在三台服务器上分别执行以下安装命令。
1.先安装 gluster 源
yum install centos-release-gluster -y
2.安装 glusterfs 组件
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
3.创建 glusterfs 目录
mkdir /mnt/glusterd
4.修改 glusterd 目录
systemctl enable glusterd.service
systemctl start glusterd.service
systemctl status glusterd.service
三:配置 glusterfs
1.开放端口
iptables -I INPUT -p tcp --dport 24007 -j ACCEPT
2.创建存储目录
mkdir /opt/gfs_data
3.添加节点到集群
在10.116.137.196上执行以下操作:
gluster peer probe 10.116.82.28
gluster peer probe 10.116.36.57
4.查看集群状态
gluster peer status
四:配置 volume
1.volume的模式
a.分布卷(默认模式):即DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。
b.复制模式:即AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
c.条带模式:即Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
d.分布式条带模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
e.分布式复制模式:最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
f.条带复制卷模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
g.三种模式混合: 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。
2.创建分布卷
gluster volume create k8s-volume transport tcp 10.116.137.196:/mnt/gfs_data 10.116.82.28:/mnt/gfs_data 10.116.36.57:/mnt/gfs_data force
3.查看volume状态
gluster volume info
gluster volume start k8s-volume
五:Glusterfs调优
1.开启指定volume的配额
gluster volume quota k8s-volume enable
2.限制指定volume的配额
gluster volume quota k8s-volume limit-usage / 5GB
3.设置cache大小, 默认32MB
gluster volume set k8s-volume performance.cache-size 64MB
4.设置io线程, 太大会导致进程崩溃
gluster volume set k8s-volume performance.io-thread-count 16
5.设置网络检测时间, 默认42s
gluster volume set k8s-volume network.ping-timeout 10
6.设置写缓冲区的大小, 默认1M
gluster volume set k8s-volume performance.write-behind-window-size 512MB
六:Kubernetes中配置glusterfs
1.配置 endpoints(glusterfs-endpoints.json)
2.配置 service(glusterfs-service.json)
3.创建测试 pod
4.配置PersistentVolume(glusterfs-pv.yaml)
5.配置PVC(glusterfs-pvc.yaml)
6.创建nginx deployment 挂载 volume(nginx-deployment.yaml)
a.查看 deployment
kubectl get pods |grep nginx-dm
kubectl exec -it nginx-dm-64dcbb8d55-pp9vn -- df -h
kubectl exec -it nginx-dm-64dcbb8d55-pp9vn -- touch /usr/share/nginx/html/index.html
kubectl exec -it nginx-dm-64dcbb8d55-sclj6 -- ls -lt /usr/share/nginx/html/index.html
d.验证 glusterfs
因为我们使用分布卷,所以可以看到某个节点中有文件
ls /mnt/gfs_data/
index.html
GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
服务器:
10.116.137.196 k8s_master
10.116.82.28 k8s_node1
10.116.36.57 k8s_node2
二:安装glusterfs
我们直接在物理机上使用yum安装,在三台服务器上分别执行以下安装命令。
1.先安装 gluster 源
yum install centos-release-gluster -y
2.安装 glusterfs 组件
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
3.创建 glusterfs 目录
mkdir /mnt/glusterd
4.修改 glusterd 目录
点击(此处)折叠或打开
- volume management
- type mgmt/glusterd
- option working-directory /mnt/glusterd
- option transport-type socket,rdma
- option transport.socket.keepalive-time 10
- option transport.socket.keepalive-interval 2
- option transport.socket.read-fail-log off
- option ping-timeout 0
- option event-threads 1
- # option lock-timer 180
- # option transport.address-family inet6
- # option base-port 49152
- end-volume
systemctl enable glusterd.service
systemctl start glusterd.service
systemctl status glusterd.service
三:配置 glusterfs
1.开放端口
iptables -I INPUT -p tcp --dport 24007 -j ACCEPT
2.创建存储目录
mkdir /opt/gfs_data
3.添加节点到集群
在10.116.137.196上执行以下操作:
gluster peer probe 10.116.82.28
gluster peer probe 10.116.36.57
4.查看集群状态
gluster peer status
点击(此处)折叠或打开
- Number of Peers: 2
- Hostname: 10.116.82.28
- Uuid: f73138ca-e32e-4d87-a99d-cf842fc29447
- State: Peer in Cluster (Connected)
- Hostname: 10.116.36.57
- Uuid: 18e22d2c-049b-4b0c-8cc7-2560319e6c05
- State: Peer in Cluster (Connected)
- [root@iZwz95trb3stk6afg8oozuZ kubernetes]# clear
- [root@iZwz95trb3stk6afg8oozuZ kubernetes]# gluster volume create k8s-volume transport tcp 10.116.137.196:/mnt/gfs_data 10.116.82.28:/mnt/gfs_data 10.116.36.57:/mnt/gfs_data force
- volume create: k8s-volume: success: please start the volume to access data
- [root@iZwz95trb3stk6afg8oozuZ kubernetes]# gluster volume info
- Volume Name: k8s-volume
- Type: Distribute
- Volume ID: 62900029-02c9-4870-951c-38fafd5f5d9b
- Status: Created
- Snapshot Count: 0
- Number of Bricks: 3
- Transport-type: tcp
- Bricks:
- Brick1: 10.116.137.196:/mnt/gfs_data
- Brick2: 10.116.82.28:/mnt/gfs_data
- Brick3: 10.116.36.57:/mnt/gfs_data
- Options Reconfigured:
- transport.address-family: inet
- nfs.disable: on
四:配置 volume
1.volume的模式
a.分布卷(默认模式):即DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。
b.复制模式:即AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
c.条带模式:即Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
d.分布式条带模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
e.分布式复制模式:最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
f.条带复制卷模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
g.三种模式混合: 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。
2.创建分布卷
gluster volume create k8s-volume transport tcp 10.116.137.196:/mnt/gfs_data 10.116.82.28:/mnt/gfs_data 10.116.36.57:/mnt/gfs_data force
3.查看volume状态
gluster volume info
点击(此处)折叠或打开
- Volume Name: k8s-volume
- Type: Distribute
- Volume ID: 62900029-02c9-4870-951c-38fafd5f5d9b
- Status: Created
- Snapshot Count: 0
- Number of Bricks: 3
- Transport-type: tcp
- Bricks:
- Brick1: 10.116.137.196:/mnt/gfs_data
- Brick2: 10.116.82.28:/mnt/gfs_data
- Brick3: 10.116.36.57:/mnt/gfs_data
- Options Reconfigured:
- transport.address-family: inet
- nfs.disable: on
gluster volume start k8s-volume
五:Glusterfs调优
1.开启指定volume的配额
gluster volume quota k8s-volume enable
2.限制指定volume的配额
gluster volume quota k8s-volume limit-usage / 5GB
3.设置cache大小, 默认32MB
gluster volume set k8s-volume performance.cache-size 64MB
4.设置io线程, 太大会导致进程崩溃
gluster volume set k8s-volume performance.io-thread-count 16
5.设置网络检测时间, 默认42s
gluster volume set k8s-volume network.ping-timeout 10
6.设置写缓冲区的大小, 默认1M
gluster volume set k8s-volume performance.write-behind-window-size 512MB
六:Kubernetes中配置glusterfs
1.配置 endpoints(glusterfs-endpoints.json)
点击(此处)折叠或打开
- {
- "kind": "Endpoints",
- "apiVersion": "v1",
- "metadata": {
- "name": "glusterfs-cluster"
- },
- "subsets": [
- {
- "addresses": [
- {
- "ip": "10.116.137.196"
- }
- ],
- "ports": [
- {
- "port": 1990
- }
- ]
- }
- ]
- }
2.配置 service(glusterfs-service.json)
点击(此处)折叠或打开
- {
- "kind": "Service",
- "apiVersion": "v1",
- "metadata": {
- "name": "glusterfs-cluster"
- },
- "spec": {
- "ports": [
- {"port": 1990}
- ]
- }
- }
3.创建测试 pod
点击(此处)折叠或打开
- {
- "apiVersion": "v1",
- "kind": "Pod",
- "metadata": {
- "name": "glusterfs"
- },
- "spec": {
- "containers": [
- {
- "name": "glusterfs",
- "image": "registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0",
- "volumeMounts": [
- {
- "mountPath": "/mnt/glusterfs",
- "name": "glusterfsvol"
- }
- ]
- }
- ],
- "volumes": [
- {
- "name": "glusterfsvol",
- "glusterfs": {
- "endpoints": "glusterfs-cluster",
- "path": "k8s-volume",
- "readOnly": true
- }
- }
- ]
- }
- }
4.配置PersistentVolume(glusterfs-pv.yaml)
点击(此处)折叠或打开
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: gluster-dev-volume
- spec:
- capacity:
- storage: 1Gi
- accessModes:
- - ReadWriteMany
- glusterfs:
- endpoints: "glusterfs-cluster"
- path: "k8s-volume"
- readOnly: false
5.配置PVC(glusterfs-pvc.yaml)
点击(此处)折叠或打开
- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: glusterfs-nginx
- spec:
- accessModes:
- - ReadWriteMany
- resources:
- requests:
- storage: 1Gi
6.创建nginx deployment 挂载 volume(nginx-deployment.yaml)
点击(此处)折叠或打开
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- name: nginx-dm
- spec:
- replicas: 2
- template:
- metadata:
- labels:
- name: nginx
- spec:
- containers:
- - name: nginx
- image: nginx:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 80
- volumeMounts:
- - name: gluster-dev-volume
- mountPath: "/usr/share/nginx/html"
- volumes:
- - name: gluster-dev-volume
- persistentVolumeClaim:
- claimName: glusterfs-nginx
a.查看 deployment
kubectl get pods |grep nginx-dm
点击(此处)折叠或打开
- nginx-dm-64dcbb8d55-pp9vn 1/1 Running 0 1h
- nginx-dm-64dcbb8d55-sclj6 1/1 Running 0 1h
kubectl exec -it nginx-dm-64dcbb8d55-pp9vn -- df -h
点击(此处)折叠或打开
- Filesystem Size Used Avail Use% Mounted on
- overlay 40G 23G 16G 60% /
- tmpfs 3.7G 0 3.7G 0% /dev
- tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
- /dev/xvda1 40G 23G 16G 60% /etc/hosts
- shm 64M 0 64M 0% /dev/shm
- 10.116.137.196:k8s-volume 5.0G 0 5.0G 0% /usr/share/nginx/html
- tmpfs 3.7G 12K 3.7G 1% /run/secrets/kubernetes.io/serviceaccount
kubectl exec -it nginx-dm-64dcbb8d55-pp9vn -- touch /usr/share/nginx/html/index.html
kubectl exec -it nginx-dm-64dcbb8d55-sclj6 -- ls -lt /usr/share/nginx/html/index.html
d.验证 glusterfs
因为我们使用分布卷,所以可以看到某个节点中有文件
ls /mnt/gfs_data/
index.html
节点
模式
服务器
服务
配置
文件
存储
目录
分布式
数据
条带
组合型
组合
大小
数量
物理
状态
空间
网络
配额
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
有格互联网科技
山东特亿宝互联网科技有限公司
科技股互联网
艾特科技互联网
互联网科技缩写
天下捷融互联网科技
郑州华宇互联网科技
美国互联网前沿科技
汉立互联网科技有限公司联系电话
昭通云南众福互联网科技有限公司
互联网科技公司有风险吗
工业互联网等科技实现智能化赋能
区块链结合互联网科技
华中科技大学互联网的牛人
新氧科技和美国互联网有关系吗
宁波跨境商互联网科技有限公司
普陀区互联网教育科技管理办法
互联网科技收购价值
西安左小互联网科技有限公司
北京军民互联网科技公司
美国互联网科技巨头监管
互联网科技作文
米客互联网科技
互联网高科技股票
华服互联网科技官网
互联网科技项目计划书材料类
互联网科技研发水平
中天科技中国工业互联网
互联网硬科技公司
互联网领先科技活动