kubernetes实践之二十六:GlusterFS
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,一:前言GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
网上外卖系统数据库设计
微信小程序云数据库sum
网络安全要推动依法管网
csgo休闲游戏服务器关闭
水下图像基准数据库
电子文件网络安全
西湖区网络安全
学计算机网络技术女生多吗
通用汽车网络安全副总裁
广州奇迹数据库
数据库sum值为0不输出
郴州好用的服务器
软件开发人员缩写
贵州网络技术分类市场价
数据库的循环判断语句
等级保护软件开发安全规范
如何修改力控的实时数据库
国外网络安全和战略利益
网络安全活动展板简报
通过服务器重置数据库密码
青山区国际网络安全维护怎么样
如何投诉网络安全的平台
如何设置用户拒绝接入服务器
国产服务器主机品牌有哪些
150虎卫传说服务器端
软件开发学校前十
优秀物业管理软件开发
数据库管理系统怎么设置
lol 国家服务器
网络安全催化怎么做