背景
Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。
目前 Curve Operator 已支持 CurveBS 集群部署和删除功能,本文我们对 curve-operator 项目的使用以及如何配合 curve-csi,使用 Curve 为后端 Pod 提供存储系统的能力做一个简单介绍。
另外,社区目前在进主要围绕 Curve Operator 的开发者活动;欢迎感兴趣的朋友报名,有礼包和开发者证书哦~ 2023 Curve 开发者活动来了!
部署 Curve Cluster
环境要求
三个节点(目前不支持单机部署,该功能正在开发中)
Kubernetes 1.19+
安装 curve-operator
第一步是部署 Curve Operator,只需要克隆下 Operator 仓库,然后安装即可:
git clone https://github.com/opencurve/curve-operator.git
cd curve-operator/config
kubectl apply -f deploy/manifests.yaml
执行完上述命令之后,你可以执行以下命令验证 curve-operator 处于 running 状态:
kubectl get pod -n curvebs
NAME READY STATUS RESTARTS AGE
curve-operator-69bc69c75d-jfsjg 1/1 Running 0 7s
部署 Curve Cluster
经过上述第一步的操作,Curve Operator 处于 running 状态,下一步我们就需要部署一个 CurveBS 后端集群,在部署之前,需要有几项内容需要配置。
完整的配置文件在 config/samples/cluster.yaml
apiVersion: operator.curve.io/v1
kind: CurveCluster
metadata:
name: my-cluster
namespace: curvebs
spec:
curveVersion:
image: opencurvedocker/curvebs:v1.2
nodes:
- curve-operator-node1
- curve-operator-node2
- curve-operator-node3
dataDirHostPath: /curvebs/data
logDirHostPath: /curvebs/log
etcd:
port: 23880
listenPort: 23890
mds:
port: 23970
dummyPort: 23960
storage:
useSelectedNodes: false
nodes:
- curve-operator-node1
- curve-operator-node2
- curve-operator-node3
port: 8200
copysets: 100
devices:
- name: /dev/vdc
mountPath: /data/chunkserver0
percentage: 80
snapShotClone:
enable: false
port: 5555
dummyPort: 8083
proxyPort: 8084
s3Config:
ak: minioadmin
sk: minioadmin
nosAddress: http://10.219.196.145:9000
bucketName: curvebs
需要注意的一下几个字段:
curveVersion:CurveBS 集群版本;
nodes:这里需要配置集群中的三个节点,后续在这三个节点上会部署 etcd,mds 和 snapshotclone (可选)
各个服务的 port 端口:这些端口需要保证不能与节点上的其他服务产生冲突,否则会部署失败;
storage:配置存储节点,即 chunkserver。这里 storage.nodes 是需要部署 chunkserver 的所有节点,devices 是配置存储设备,要求上述配置的所有节点都要存在该磁盘,否则会部署失败。
snapShotClone:快照克隆服务,该服务是可选部署,如果不想要部署该服务,将 snapShotClone.enable 设置为 false 即可。
在修改完成上述内容之后,使用如下命令部署 Curve cluster:
kubectl apply -f config/samples/cluster.yaml
随后,可以使用去查看 curvebs 命名空间下的所有的 pod,应该能到类似下面的几个 pod 处于 running 状态。
chunkserver 服务需要等待 prepare-chunkfile job 执行结束后才会创建运行,格式化的时间根据盘符大小确定,所以可以需要等待一段时间才能看到配置的若干 curve-chunkserver pod 处于 running 状态。
root@curve-operator-node1:~/curve-operator# kubectl get pod -n curvebs
NAME READY STATUS RESTARTS AGE
curve-chunkserver-curve-operator-node1-vdc-556fc99467-5nx9q 1/1 Running 0 5m45s
curve-chunkserver-curve-operator-node2-vdc-7cf89768f9-hmcrs 1/1 Running 0 5m45s
curve-chunkserver-curve-operator-node3-vdc-f77dd85dc-z5bws 1/1 Running 0 5m45s
curve-etcd-a-d5bbfb755-lzgrm 1/1 Running 0 41m
curve-etcd-b-66c5b54f75-6nnnt 1/1 Running 0 41m
curve-etcd-c-86b7964f87-cj8zk 1/1 Running 0 41m
curve-mds-a-7b5989bddd-ln2sm 1/1 Running 0 40m
curve-mds-b-56d8f58645-gv6pd 1/1 Running 0 40m
curve-mds-c-997c7fd-vt5hw 1/1 Running 0 40m
gen-logical-pool-rzhlz 0/1 Completed 0 5m15s
gen-physical-pool-chnw8 0/1 Completed 0 5m45s
prepare-chunkfile-curve-operator-node1-vdc-znb66 0/1 Completed 0 40m
prepare-chunkfile-curve-operator-node2-vdc-6gf2z 0/1 Completed 0 40m
prepare-chunkfile-curve-operator-node3-vdc-2bkxm 0/1 Completed 0 40m
read-config-k272k 0/1 Completed 0 41m
至此整个集群已经部署完成。
在完成 Curve 后端集群部署之后,需要部署 curve-csi 进一步验证集群的正确性。
root@curve-operator-node1:~/code/curve-csi/deploy# kubectl get pod -n csi-system
NAME READY STATUS RESTARTS AGE
csi-curve-plugin-9lx6f 2/2 Running 0 4s
csi-curve-plugin-pjd42 2/2 Running 0 4s
csi-curve-plugin-provisioner-744d477fc7-blgvd 5/5 Running 0 5s
csi-curve-plugin-provisioner-744d477fc7-gqm2l 5/5 Running 0 5s
csi-curve-plugin-vqpbz 2/2 Running 0 4s
2. 创建 StorageClass 以及 PVC 看是否可以创建 Curve volume
kubectl apply -f example/storageclass.yaml
kubectl apply -f example/pvc.yaml
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
curve-test-pvc Bound pvc-119ca0e2-259f-4c29-8399-8899e1f7b96e 20Gi RWO curve 3s
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-119ca0e2-259f-4c29-8399-8899e1f7b96e 20Gi RWO Delete Bound default/curve-test-pvc curve 78s
可以看到 PV 和 PVC 创建成功,并已经成功绑定。
kubectl apply -f example/pod.yaml
NAME READY STATUS RESTARTS AGE
csi-curve-test 1/1 Running 0 20s
🔥 火爆报名中:
2023 开源之夏 | Curve 邀你与中国存储软件共成长,赢万元奖金


关于 Curve
Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
GitHub:https://github.com/opencurve/curve 官网:https://opencurve.io/ 用户论坛:https://ask.opencurve.io/ 微信群:搜索群助手微信号 OpenCurve_bot




