共计 5426 个字符,预计需要花费 14 分钟才能阅读完成。
Curve 介绍
Curve 是网易开发的古代存储系统,目前反对文件存储 (CurveFS) 和块存储 (CurveBS)。当初它作为一个沙盒我的项目托管在 CNCF。
Curve 是一个高性能、轻量级操作、本地云的开源分布式存储系统。Curve 能够利用于 :
1) 支流云本地基础设施平台 OpenStack 和 Kubernetes;
2) 云本地数据库的高性能存储 ;
3) 应用与 s3 兼容的对象存储作为数据存储的云存储中间件。
实现成果
通过部署 CurveFS 集群、Helm 部署 Curve-csi 插件创立 SC 来达到申明 PVC 时主动创立 PV 的成果
开始部署
K8s 环境能够通过装置 KubeSphere 进行部署 , 我应用的是高可用计划。
在私有云上装置 KubeSphere 参考文档:多节点装置
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 79d v1.23.8
k8s-node1 Ready worker 79d v1.23.8
k8s-node2 Ready worker 79d v1.23.8
k8s-node3 Ready worker 79d v1.23.8
应用 Curveadm 工具部署 CurveFS
CurveAdm 是 Curve 团队为进步零碎易用性而设计的工具,其次要用于疾速部署和运维 CurveBS/CurveFS 集群。
硬件环境需要:
宿主机 | 零碎 | IP 地址 |
---|---|---|
Curve(管制节点) | Centos7.9 | 192.168.149.169 |
Curve1(服务节点) | Centos7.9 | 192.168.149.177 |
每台服务器都须要装置 docker:
[root@curve ~]# yum install -y yum-utils
[root@curve ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@curve ~]# yum install docker-ce docker-ce-cli containerd.io
[root@curve ~]# systemctl start docker
管制节点装置 Curveadm:
[root@curve ~]# bash -c "$(curl -fsSL https://curveadm.nos-eastchina1.126.net/script/install.sh)"
主机治理
主机模块用来对立治理用户主机,以缩小用户在各配置文件中反复填写主机 SSH 连贯相干配置。(此操作在管制节点进行)
筹备主机列表:
global:
user: root
ssh_port: 22
private_key_file: /root/.ssh/id_rsa
hosts:
- host: curve1
hostname: 192.168.149.169
- host: curve
hostname: 192.168.149.177
forward_agent: true
become_user: root
labels:
- client
阐明:
创立 SSH 秘钥:
[root@curve ~]# ssh-keygen #一路回车即可
[root@curve ~]# ssh-copy-id -i root@192.168.149.177
#发送私钥到服务节点
导入主机列表:
[root@curve ~]#curveadm hosts commit hosts.yaml
查看主机列表:
[root@curve ~]# curveadm hosts ls
CuveFS 集群拓扑
集群拓扑文件用来形容哪些服务部署在哪些机器上,以及每一个服务实例的配置。
(目前集群拓扑分为单机部署、多机部署本教程只演示单机部署)
筹备单机部署文件:
阐明:此文件只须要批改一处,target 的值改成服务节点的 hostname,其余全默认不须要批改。
kind: curvefs
global:
report_usage: true
data_dir: ${home}/curvefs/data/${service_role}${service_host_sequence}
log_dir: ${home}/curvefs/logs/${service_role}${service_host_sequence}
container_image: opencurvedocker/curvefs:latest
variable:
home: /tmp
target: curve1 #这里须要改成服务节点的 hostname
etcd_services:
config:
listen.ip: ${service_host}
listen.port: 2380${service_host_sequence} # 23800,23801,23802
listen.client_port: 2379${service_host_sequence} # 23790,23791,23792
deploy:
- host: ${target}
- host: ${target}
- host: ${target}
mds_services:
config:
listen.ip: ${service_host}
listen.port: 670${service_host_sequence} # 6700,6701,6702
listen.dummy_port: 770${service_host_sequence} # 7700,7701,7702
deploy:
- host: ${target}
- host: ${target}
- host: ${target}
metaserver_services:
config:
listen.ip: ${service_host}
listen.port: 680${service_host_sequence} # 6800,6801,6802
listen.external_port: 780${service_host_sequence} # 7800,7801,7802
global.enable_external_server: true
metaserver.loglevel: 0
# whether commit filesystem caches of raft wal to disk.
# it should be true iff you wants data NEVER lost,
# of course, it will leads some performance skew.
braft.raft_sync: false
deploy:
- host: ${target}
- host: ${target}
- host: ${target}
config:
metaserver.loglevel: 0
部署预检
预检模块用来提前检测那些可能导致用户部署失败的因素,以进步用户部署的成功率。
增加自定义命名集群,并指定拓扑文件:
[root@curve ~]# curveadm cluster add curve -f topology.yaml
切换 curve 集群为以后治理集群:
[root@curve ~]# curveadm cluster checkout curve
执行预检:
[root@curve ~]# curveadm precheck
查看执行后果:
应用 CurveAdm 部署 CurveFS 集群
[root@curve ~]# curveadm deploy
如果部署胜利,将会输入相似 Cluster 'curve' successfully deployed ^_^. 的字样
查看集群运行状况:
[root@curve ~]#curveadm status
[root@localhost curve]# curveadm status
Get Service Status: [OK]
cluster name : curve
cluster kind : curvefs
cluster mds addr : 192.168.149.177:6700,192.168.149.177:6701,192.168.149.177:6702
cluster mds leader: 192.168.149.177:6701 / f339fd5e7f3e
Id Role Host Replicas Container Id Status
-- ---- ---- -------- ------------ ------
724fe98710d0 etcd curve1 1/1 e3d86591f2dc Up 50 seconds
d5b08fe05a81 etcd curve1 1/1 da7932929055 Up 50 seconds
963664e175dd etcd curve1 1/1 134d4445542a Up 50 seconds
83fa9fc656af mds curve1 1/1 1f7429cd9822 Up 48 seconds
f339fd5e7f3e mds curve1 1/1 2983a89adecf Up 49 seconds
3d7201165a57 mds curve1 1/1 b6135408346b Up 49 seconds
875d7fd126f2 metaserver curve1 1/1 1983afeed590 Up 44 seconds
9d5fb31b2bd9 metaserver curve1 1/1 fe920d6b7343 Up 44 seconds
1344d99579c4 metaserver curve1 1/1 875cb4e5c14d Up 44 seconds
[root@localhost curve]# curveadm status
Get Service Status: [OK]
cluster name : curve
cluster kind : curvefs
cluster mds addr : 192.168.149.177:6700,192.168.149.177:6701,192.168.149.177:6702
cluster mds leader: 192.168.149.177:6701 / f339fd5e7f3e
Id Role Host Replicas Container Id Status
-- ---- ---- -------- ------------ ------
724fe98710d0 etcd curve1 1/1 e3d86591f2dc Up 2 hours
d5b08fe05a81 etcd curve1 1/1 da7932929055 Up 2 hours
963664e175dd etcd curve1 1/1 134d4445542a Up 2 hours
83fa9fc656af mds curve1 1/1 1f7429cd9822 Up 2 hours
f339fd5e7f3e mds curve1 1/1 2983a89adecf Up 2 hours
3d7201165a57 mds curve1 1/1 b6135408346b Up 2 hours
875d7fd126f2 metaserver curve1 1/1 1983afeed590 Up 2 hours
9d5fb31b2bd9 metaserver curve1 1/1 fe920d6b7343 Up 2 hours
1344d99579c4 metaserver curve1 1/1 875cb4e5c14d Up 2 hours
KubeSphere 平台部署 minio
增加 minio 利用仓库
增加仓库地址:charts.min.io/
。
从利用模板创立 minio 服务
<,,,,>
自定义 root 账号和明码:
拜访 minio 界面并设置:
阐明:登录的 URL 是集群宿主机的 IP+NodePort 端口,能够在 service 中查看对应端口号
点击新建 Bucket:
自定义 Bucket 名称:
创立 Policies:
自定义 Policy Name:
创立规定:
阐明 : 此规定是全局 Bucket 都能够拜访,生产环境不倡议这么配置
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket"
],
"Resource": ["arn:aws:s3:::*"]
}
]
}
创立 Users:
创立 AKSK:
自定义账号名称并勾选方才设置好的规定(也能够全选):
创立 Group:
KubeSphere 平台部署 Cruvefs-csi 插件
创立利用:
抉择利用商店:
抉择 Curvefs-csi 利用进行装置:
填写 parameters 信息。字段阐明 :
- mdsAddr 地址能够通过 Curveadm status 输入后查看
- s3Endpoint 能够通过 K8s 集群的 service 里查看到(要填写 minio 服务对应的 NodePort,不要填写 console 的 Nodeport)
- AKSK 能够通过方才 minio 上创立时保留的查看
- s3Bucket 能够通过方才创立的 Bucket 查看
通过 Curve-sc 创立 PV 和 PVC 进行挂载
创立长久卷申明:
创立工作负载应用存储卷:
进入容器终端:
切换目录到 /data 并写入测试数据:
cd /data
mkdir curve
echo 1111 > curve.txt
验证查看 minio 数据:
本文由博客一文多发平台 OpenWrite 公布!